t7704: demonstrate failure with once-cruft objects above the geometric split
Add a test demonstrating a case where geometric repacking fails to produce a pack with full object closure, thus making it impossible to write a reachability bitmap. Mark the test with 'test_expect_failure' for now. The subsequent commit will explain the precise failure mode, and implement a fix. Signed-off-by: Taylor Blau <me@ttaylorr.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Taylor Blau committed
Mar 27, 2026 at 16:06 UTC
5a4381f093508f0504a99b1abc9ca5e8ebd0901f
1 file changed
+22
t/t7704-repack-cruft.sh
+22
@@ -869,4 +869,26 @@ test_expect_success 'repack --write-midx includes cruft when already geometric'
869
)
870
'
871
872
+test_expect_failure 'repack rescues once-cruft objects above geometric split' '
873
+ git config repack.midxMustContainCruft false &&
874
+
875
+ test_commit reachable &&
876
+ test_commit unreachable &&
877
+
878
+ unreachable="$(git rev-parse HEAD)" &&
879
+
880
+ git reset --hard HEAD^ &&
881
+ git tag -d unreachable &&
882
+ git reflog expire --all --expire=all &&
883
+
884
+ git repack --cruft -d &&
885
+
886
+ echo $unreachable | git pack-objects .git/objects/pack/pack &&
887
+
888
+ test_commit new &&
889
+
890
+ git update-ref refs/heads/other $unreachable &&
891
+ git repack --geometric=2 -d --write-midx --write-bitmap-index
892
+'
893
+
894
test_done