diff --relative: output paths as relative to the current subdirectory
[gitweb.git] / git-repack.sh
index 0aae1a3ed5571a010f80438f8e8a0fc7eb0dc285..e18eb3f5dcf42abfbd125594877ececf92c3d9b6 100755 (executable)
@@ -3,25 +3,41 @@
 # Copyright (c) 2005 Linus Torvalds
 #
 
-USAGE='[-a] [-d] [-f] [-l] [-n] [-q] [--max-pack-size=N] [--window=N] [--window-memory=N] [--depth=N]'
+OPTIONS_KEEPDASHDASH=
+OPTIONS_SPEC="\
+git-repack [options]
+--
+a               pack everything in a single pack
+A               same as -a, and keep unreachable objects too
+d               remove redundant packs, and run git-prune-packed
+f               pass --no-reuse-delta to git-pack-objects
+q,quiet         be quiet
+l               pass --local to git-pack-objects
+ Packing constraints
+window=         size of the window used for delta compression
+window-memory=  same as the above, but limit memory size instead of entries count
+depth=          limits the maximum delta depth
+max-pack-size=  maximum size of each packfile
+"
 SUBDIRECTORY_OK='Yes'
 . git-sh-setup
 
-no_update_info= all_into_one= remove_redundant=
+no_update_info= all_into_one= remove_redundant= keep_unreachable=
 local= quiet= no_reuse= extra=
 while test $# != 0
 do
        case "$1" in
        -n)     no_update_info=t ;;
        -a)     all_into_one=t ;;
+       -A)     all_into_one=t
+               keep_unreachable=--keep-unreachable ;;
        -d)     remove_redundant=t ;;
        -q)     quiet=-q ;;
        -f)     no_reuse=--no-reuse-object ;;
        -l)     local=--local ;;
-       --max-pack-size=*) extra="$extra $1" ;;
-       --window=*) extra="$extra $1" ;;
-       --window-memory=*) extra="$extra $1" ;;
-       --depth=*) extra="$extra $1" ;;
+       --max-pack-size|--window|--window-memory|--depth)
+               extra="$extra $1=$2"; shift ;;
+       --) shift; break;;
        *)      usage ;;
        esac
        shift
@@ -59,7 +75,13 @@ case ",$all_into_one," in
                        fi
                done
        fi
-       [ -z "$args" ] && args='--unpacked --incremental'
+       if test -z "$args"
+       then
+               args='--unpacked --incremental'
+       elif test -n "$keep_unreachable"
+       then
+               args="$args $keep_unreachable"
+       fi
        ;;
 esac
 
@@ -75,9 +97,6 @@ for name in $names ; do
        fullbases="$fullbases pack-$name"
        chmod a-w "$PACKTMP-$name.pack"
        chmod a-w "$PACKTMP-$name.idx"
-       if test "$quiet" != '-q'; then
-           echo "Pack pack-$name created."
-       fi
        mkdir -p "$PACKDIR" || exit
 
        for sfx in pack idx