Acelera el script bash convirtiendo el repository git en LFS

Estoy tratando de convertir un repository git a lfs. Estoy probando este script de bash en este momento y noté que es bastante lento. ¿Alguien sabe cómo acelerar esto un poco? No estoy realmente en todo esto.

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 

Considere replace

 while read -r -d $'"'\0'"' file; do echo "Processing ${file}" git rm -f --cached "${file}" echo "Adding $file lfs style" git add "${file}" done 

con…

 xargs -0 sh -c ' printf "Processing file: %s\n" "$@" git rm -f --cached "$@" && git add "$@" ' _ 

De esta forma, en lugar de invocar git rm y git add por file, invoque ambas herramientas solo una vez para cada grupo de files hasta el tamaño máximo que cabe en el espacio disponible compartido entre las variables de entorno y la longitud de la línea de command .


También sugeriría combinar los commands de git lfs track en una sola invocación. Por ejemplo, si lees la fuente al command de track , verás que admite el siguiente uso:

 git lfs track "*.psd" "*.jpg" "*.png"