#!/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 |