From: Pavel Roskin Date: Fri, 28 Oct 2005 02:39:21 GMT Subject: [PATCH] Make cg-clean faster and space-safe Message-ID: <1130467161.2186.25.camel@dv> 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 diff --git a/cg-clean b/cg-clean index ea00d2b..f7b5151 100755 --- a/cg-clean +++ b/cg-clean @@ -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" -- Regards, Pavel Roskin