aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTaylor Blau <me@ttaylorr.com>2026-03-27 16:06:49 -0400
committerJunio C Hamano <gitster@pobox.com>2026-03-27 13:40:39 -0700
commit5a4381f093508f0504a99b1abc9ca5e8ebd0901f (patch)
treeee389a74f80fb360d06be2ad216151858b588869
parentd31d1f2e06942046b5220942c77245725d7df2c1 (diff)
downloadgit-5a4381f093508f0504a99b1abc9ca5e8ebd0901f.tar.xz
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>
-rwxr-xr-xt/t7704-repack-cruft.sh22
1 files changed, 22 insertions, 0 deletions
diff --git a/t/t7704-repack-cruft.sh b/t/t7704-repack-cruft.sh
index aa2e2e6ad8..77133395b5 100755
--- a/t/t7704-repack-cruft.sh
+++ b/t/t7704-repack-cruft.sh
@@ -869,4 +869,26 @@ test_expect_success 'repack --write-midx includes cruft when already geometric'
)
'
+test_expect_failure 'repack rescues once-cruft objects above geometric split' '
+ git config repack.midxMustContainCruft false &&
+
+ test_commit reachable &&
+ test_commit unreachable &&
+
+ unreachable="$(git rev-parse HEAD)" &&
+
+ git reset --hard HEAD^ &&
+ git tag -d unreachable &&
+ git reflog expire --all --expire=all &&
+
+ git repack --cruft -d &&
+
+ echo $unreachable | git pack-objects .git/objects/pack/pack &&
+
+ test_commit new &&
+
+ git update-ref refs/heads/other $unreachable &&
+ git repack --geometric=2 -d --write-midx --write-bitmap-index
+'
+
test_done