summaryrefslogtreecommitdiff
path: root/git-prune.sh
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2005-12-09 07:18:41 (GMT)
committerJunio C Hamano <junkio@cox.net>2005-12-09 07:18:41 (GMT)
commit2b86976bfd6e42609692d57fffaef72bd985c23a (patch)
treec0839ba1ec37f195a19a5cca13cf6fe499088494 /git-prune.sh
parent2dee581667d62d113605e97de0beda6a9dbca153 (diff)
downloadgit-2b86976bfd6e42609692d57fffaef72bd985c23a.zip
git-2b86976bfd6e42609692d57fffaef72bd985c23a.tar.gz
git-2b86976bfd6e42609692d57fffaef72bd985c23a.tar.bz2
git-prune: never lose objects reachable from our refs.
Explicit <head> arguments to git-prune replaces, instead of extends, the list of heads used for reachability analysis by fsck-objects. By giving a subset of heads by mistake, objects reachable only from other heads can be removed, resulting in a corrupted repository. This commit stops replacing the list of heads, and makes the command line arguments to add to them instead for safety. Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'git-prune.sh')
-rwxr-xr-xgit-prune.sh6
1 files changed, 5 insertions, 1 deletions
diff --git a/git-prune.sh b/git-prune.sh
index 1fd8c73..7e7f0ad 100755
--- a/git-prune.sh
+++ b/git-prune.sh
@@ -16,7 +16,11 @@ do
done
sync
-git-fsck-objects --full --cache --unreachable "$@" |
+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