X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=git-prune-script;h=a8e338c488865b1579071ea363fc18fa8e3d8890;hb=623c8a1460125f66274f451691b3576b0d0f7a4c;hp=1a97ccc91ded1522d3016d76cbdf62557585d514;hpb=f1a7eb36b017c62d9a007b6b8660bdeec3f94f97;p=git.git diff --git a/git-prune-script b/git-prune-script index 1a97ccc9..a8e338c4 100755 --- a/git-prune-script +++ b/git-prune-script @@ -1,4 +1,7 @@ #!/bin/sh + +. git-sh-setup-script || die "Not a git archive" + dryrun= while case "$#" in 0) break ;; esac do @@ -11,28 +14,12 @@ do shift; done -: ${GIT_DIR=.git} -: ${GIT_OBJECT_DIRECTORY="${SHA1_FILE_DIRECTORY-"$GIT_DIR/objects"}"} - -# 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_DIR"/HEAD "$GIT_DIR"/refs/*/* /dev/null 2>/dev/null) - shift ;; -esac - -git-fsck-cache --cache --unreachable "$@" | +git-fsck-cache --full --cache --unreachable "$@" | sed -ne '/unreachable /{ s/unreachable [^ ][^ ]* // s|\(..\)|\1/|p }' | { cd "$GIT_OBJECT_DIRECTORY" || exit - xargs -r $dryrun rm -f + xargs $dryrun rm -f }