Make cg-clean faster and space-safe
PATCH 1/1 Make cg-clean faster and space-safe
Use bash pattern matching to list all parent directories instead of using arrays. This makes cg-clean run twice as fast on the Linux kernel (4 seconds vs 8 seconds).
The new code is also for directory names containing spaces and other symbols that need to be quoted. Also, the new code is easier to read.
Signed-off-by Pavel Roskin <[email protected]>
cg-clean +6 -10
@@ -53,16 +53,12 @@ clean_dirs() git-ls-files --cached | sed -n 's|^'"$_git_relpath"'||p' | sed -n 's|/[^/]*$||p' | - while IFS='/' read -a dir; do - i=0 - while test $i != ${#dir[@]}; do - j=0 - while test $i != $j; do - echo -n ${dir[$j]}/ - j=$[$j+1] - done - echo ${dir[$i]} - i=$[$i+1] + while read dir; do + while true; do + echo "$dir" + updir="${dir%/*}" + test "$dir" = "$updir" && break + dir="$updir" done done | sort -u >"$dirlist"
Signature · 2 lines
Regards, Pavel Roskin