Merge branch 'master'
[gitweb.git] / git-repack.sh
index f34720701b0a666823bcde0da3d5b67cd2b54d9e..55a7b27dcdc646ea03da49673738e1e024a127c1 100755 (executable)
@@ -11,7 +11,7 @@ do
        case "$1" in
        -n)     no_update_info=t ;;
        -a)     all_into_one=t ;;
-       -d)     remove_redandant=t ;;
+       -d)     remove_redundant=t ;;
        -l)     local=t ;;
        *)      break ;;
        esac
@@ -42,7 +42,7 @@ name=$(git-rev-list --objects $rev_list $(git-rev-parse $rev_parse) |
        exit 1
 if [ -z "$name" ]; then
        echo Nothing new to pack.
-       if test "$remove_redandant" = t ; then
+       if test "$remove_redundant" = t ; then
                echo "Removing redundant packs."
                sync
                redundant=$(git-pack-redundant --all)
@@ -60,12 +60,25 @@ mv .tmp-pack-$name.pack "$PACKDIR/pack-$name.pack" &&
 mv .tmp-pack-$name.idx  "$PACKDIR/pack-$name.idx" ||
 exit
 
-if test "$remove_redandant" = t
+if test "$remove_redundant" = t
 then
        sync
-       redundant=$(git-pack-redundant --all)
-       if test "$redundant" != "" ; then
-               echo $redundant | xargs rm
+       if test "$all_into_one" = t
+       then
+               cd "$PACKDIR"
+               existing=`find . -type f \( -name '*.pack' -o -name '*.idx' \) -print`
+               for e in $existing
+               do
+                       case "$e" in
+                       ./pack-$name.pack | ./pack-$name.idx) ;;
+                       *)      rm -f $e ;;
+                       esac
+               done
+       else
+               redundant=$(git-pack-redundant --all)
+               if test "$redundant" != "" ; then
+                       echo $redundant | xargs rm
+               fi
        fi
 fi