X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=git-prune.sh;h=c5a5d29aaacf753b70e715169cbb7f74f0193e4a;hb=b3ca4e4ebba6915ea534c4b82cfc5d6f10b4c283;hp=b28630cacfa035106b7980b395fc9c1f9b1509d1;hpb=9106c097ad87577019544f45fda11c4d73986597;p=git.git diff --git a/git-prune.sh b/git-prune.sh index b28630ca..c5a5d29a 100755 --- a/git-prune.sh +++ b/git-prune.sh @@ -1,6 +1,7 @@ #!/bin/sh -. git-sh-setup || die "Not a git archive" +USAGE='[-n] [--] [...]' +. git-sh-setup dryrun= echo= @@ -9,13 +10,18 @@ do case "$1" in -n) dryrun=-n echo=echo ;; --) break ;; - -*) echo >&2 "usage: git-prune [ -n ] [ heads... ]"; exit 1 ;; + -*) usage ;; *) break ;; esac shift; done -git-fsck-objects --full --cache --unreachable "$@" | +sync +case "$#" in +0) git-fsck-objects --full --cache --unreachable ;; +*) git-fsck-objects --full --cache --unreachable $(git-rev-parse --all) "$@" ;; +esac | + sed -ne '/unreachable /{ s/unreachable [^ ][^ ]* // s|\(..\)|\1/|p @@ -26,3 +32,13 @@ sed -ne '/unreachable /{ } git-prune-packed $dryrun + +if redundant=$(git-pack-redundant --all 2>/dev/null) && test "" != "$redundant" +then + if test "" = "$dryrun" + then + echo "$redundant" | xargs rm -f + else + echo rm -f "$redundant" + fi +fi