X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;ds=sidebyside;f=git-prune-script;h=2e130c7f9698729f471edbdfdf9a3cce63c56ddd;hb=79882c2883267e16280d630730d6a8b5a86a8092;hp=c0ffb1dcba3bc59fe5717ca8d89645ce899452b5;hpb=d19938ab6053e3dad75a68a60ef8cad1f378b0e5;p=git.git diff --git a/git-prune-script b/git-prune-script index c0ffb1dc..2e130c7f 100755 --- a/git-prune-script +++ b/git-prune-script @@ -1,9 +1,13 @@ #!/bin/sh + +. git-sh-setup-script || die "Not a git archive" + dryrun= +echo= while case "$#" in 0) break ;; esac do case "$1" in - -n) dryrun=echo ;; + -n) dryrun=-n echo=echo ;; --) break ;; -*) echo >&2 "usage: git-prune-script [ -n ] [ heads... ]"; exit 1 ;; *) break ;; @@ -11,30 +15,13 @@ do shift; done -# Defaulting to include .git/refs/*/* may be debatable from the -# purist POV but power users can always give explicit parameters -# to the script anyway. - -case "$#" in -0) - x_40='[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]' - x_40="$x_40$x_40$x_40$x_40$x_40$x_40$x_40$x_40" - set x $(sed -ne "/^$x_40\$/p" .git/HEAD .git/refs/*/* 2>/dev/null) - shift ;; -esac - -git-fsck-cache --cache --unreachable "$@" | +git-fsck-cache --full --cache --unreachable "$@" | sed -ne '/unreachable /{ s/unreachable [^ ][^ ]* // s|\(..\)|\1/|p }' | { - for d in "$GIT_OBJECT_DIRECTORY" "$SHA1_FILE_DIRECTORY" '' - do - test "$d" != "" && test -d "$d" && break - done - case "$d" in - '') cd .git/objects/ ;; - *) cd "$d" ;; - esac || exit - xargs -r $dryrun rm -f + cd "$GIT_OBJECT_DIRECTORY" || exit + xargs $echo rm -f } + +git-prune-packed $dryrun