我正在尝试将git存储库转换为lfs。我正在尝试这个bash脚本,并注意到它很慢。有谁知道如何加快这一点?我并不是真正想要这件事。
git filter-branch --prune-empty --tree-filter '
git lfs track "*.psd"
git lfs track "*.jpg"
git lfs track "*.png"
git add .gitattributes
git ls-files -z | xargs -0 git check-attr filter | grep "filter: lfs" | sed -E "s/(.*): filter: lfs/\1/" | tr "\n" "\0" | while read -r -d $'"'\0'"' file; do
echo "Processing ${file}"
git rm -f --cached "${file}"
echo "Adding $file lfs style"
git add "${file}"
done
' --tag-name-filter cat -- --all
答案 0 :(得分:1)
考虑更换
while read -r -d $'"'\0'"' file; do
echo "Processing ${file}"
git rm -f --cached "${file}"
echo "Adding $file lfs style"
git add "${file}"
done
...与
xargs -0 sh -c '
printf "Processing file: %s\n" "$@"
git rm -f --cached "$@" && git add "$@"
' _
这样,每个文件只调用一次git rm
和git add
,而不是每个文件组一次调用这两个工具,最大大小将适合共享的可用空间在您的环境变量和命令行长度之间。
我还建议将git lfs track
命令组合到一个调用中。例如,如果您阅读the source to the track
command,,则会发现它支持以下用途:
git lfs track "*.psd" "*.jpg" "*.png"