diff options
Diffstat (limited to 'git-prune.sh')
-rwxr-xr-x | git-prune.sh | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/git-prune.sh b/git-prune.sh new file mode 100755 index 000000000..9657dbf27 --- /dev/null +++ b/git-prune.sh @@ -0,0 +1,27 @@ +#!/bin/sh + +. git-sh-setup || die "Not a git archive" + +dryrun= +echo= +while case "$#" in 0) break ;; esac +do + case "$1" in + -n) dryrun=-n echo=echo ;; + --) break ;; + -*) echo >&2 "usage: git-prune [ -n ] [ heads... ]"; exit 1 ;; + *) break ;; + esac + shift; +done + +git-fsck-objects --full --cache --unreachable "$@" | +sed -ne '/unreachable /{ + s/unreachable [^ ][^ ]* // + s|\(..\)|\1/|p +}' | { + cd "$GIT_OBJECT_DIRECTORY" || exit + xargs $echo rm -f +} + +git-prune-packed $dryrun |