summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDoug Kelly <dougk.ff7@gmail.com>2016-01-13 11:07:11 -0600
committerJunio C Hamano <gitster@pobox.com>2016-01-13 12:12:30 -0800
commit8462ae4033b17537f997f188dc87ad5b5ee10f89 (patch)
tree18a0b6d24ad534d0003f349f5cc531864d3ecf54
parentadee53654d2eda2f062dae47aa48af3dd7cc6665 (diff)
downloadgit-8462ae4033b17537f997f188dc87ad5b5ee10f89.tar.gz
t5304: ensure non-garbage files are not deleted
Explicitly test for and ensure files that may be wanted are not deleted during a gc operation. These include .pack without .idx (which may be in-flight), garbage in the directory that clearly is not related to packing, and .keep files the user created. Signed-off-by: Doug Kelly <dougk.ff7@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rwxr-xr-xt/t5304-prune.sh17
1 files changed, 17 insertions, 0 deletions
diff --git a/t/t5304-prune.sh b/t/t5304-prune.sh
index 4fa6e7aefd..f7c380c5cf 100755
--- a/t/t5304-prune.sh
+++ b/t/t5304-prune.sh
@@ -285,6 +285,23 @@ EOF
test_cmp expected actual
'
+test_expect_success 'ensure unknown garbage kept with gc' '
+ test_when_finished "rm -f .git/objects/pack/fake*" &&
+ test_when_finished "rm -f .git/objects/pack/foo*" &&
+ : >.git/objects/pack/foo.keep &&
+ : >.git/objects/pack/fake.pack &&
+ : >.git/objects/pack/fake2.foo &&
+ git gc &&
+ git count-objects -v 2>stderr &&
+ grep "^warning:" stderr | sort >actual &&
+ cat >expected <<\EOF &&
+warning: garbage found: .git/objects/pack/fake2.foo
+warning: no corresponding .idx or .pack: .git/objects/pack/foo.keep
+warning: no corresponding .idx: .git/objects/pack/fake.pack
+EOF
+ test_cmp expected actual
+'
+
test_expect_success 'prune .git/shallow' '
SHA1=`echo hi|git commit-tree HEAD^{tree}` &&
echo $SHA1 >.git/shallow &&