| #!/bin/sh | |
| USAGE='[-n] [--] [<head>...]' | |
| . git-sh-setup | |
| dryrun= | |
| echo= | |
| while case "$#" in 0) break ;; esac | |
| do | |
| case "$1" in | |
| -n) dryrun=-n echo=echo ;; | |
| --) break ;; | |
| -*) usage ;; | |
| *) break ;; | |
| esac | |
| shift; | |
| done | |
| 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 | |
| }' | { | |
| cd "$GIT_OBJECT_DIRECTORY" || exit | |
| xargs $echo rm -f | |
| rmdir 2>/dev/null [0-9a-f][0-9a-f] | |
| } | |
| 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 |