mirror of
https://github.com/git/git.git
synced 2024-11-05 16:52:59 +01:00
ae2b0f1518
Now all the users of this script detect its exit status and die, complaining that it is outside git repository. So move the code that dies from all callers to git-sh-setup script. Signed-off-by: Junio C Hamano <junkio@cox.net>
40 lines
688 B
Bash
Executable file
40 lines
688 B
Bash
Executable file
#!/bin/sh
|
|
|
|
. git-sh-setup
|
|
|
|
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
|
|
|
|
sync
|
|
git-fsck-objects --full --cache --unreachable "$@" |
|
|
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
|
|
|
|
redundant=$(git-pack-redundant --all)
|
|
if test "" != "$redundant"
|
|
then
|
|
if test "" = "$dryrun"
|
|
then
|
|
echo "$redundant" | xargs rm -f
|
|
else
|
|
echo rm -f "$redundant"
|
|
fi
|
|
fi
|