Re: [PATCH v5 9/9] repack: exclude cruft pack(s) from the MIDX where possible
From: Jeff King <hidden>
Date: 2025-06-21 04:36:00
On Thu, Jun 19, 2025 at 07:30:33PM -0400, Taylor Blau wrote:
+test_expect_success 'repack --write-midx excludes cruft where possible' '
+ setup_cruft_exclude_tests exclude-cruft-when-possible &&
+ (
+ cd exclude-cruft-when-possible &&
+
+ GIT_TEST_MULTI_PACK_INDEX=0 \
+ git repack -d --geometric=2 --write-midx --write-bitmap-index &&
+
+ test-tool read-midx --show-objects $objdir >midx &&
+ cruft="$(ls $packdir/*.mtimes)" &&
+ test_grep ! "$(basename "$cruft" .mtimes).idx" midx &&
+
+ git rev-list --all --objects --no-object-names >reachable.raw &&
+ sort reachable.raw >reachable.objects &&
+ awk "/\.pack$/ { print \$1 }" <midx | sort >midx.objects &&
+
+ test_cmp reachable.objects midx.objects
+ )
+'This test (but none of the others) fails when run with: GIT_TEST_MULTI_PACK_INDEX=1 \ GIT_TEST_MULTI_PACK_INDEX_WRITE_INCREMENTAL=1 \ ./t7704-repack-cruft.sh The culprit is the incremental flag, but you need the first one for the second to do anything. The issue is that the cruft pack unexpectedly appears in the midx: error: '! grep pack-45dcff625845dc0ad702f91d853d0950f9be0eb9.idx midx' did find a match in: header: 4d494458 1 20 6 3 chunks: pack-names oid-fanout oid-lookup object-offsets num_objects: 12 packs: pack-110f8bab659db6e691a75b6462d043214fd1da92.idx pack-45dcff625845dc0ad702f91d853d0950f9be0eb9.idx pack-91db7b4b856b00c3e675824c5bc5389b6810037a.idx object-dir: .git/objects 07d4aa2eb79f3a92e1dadaee6ef6b883cdbba641 12 .git/objects/pack/pack-45dcff625845dc0ad702f91d853d0950f9be0eb9.pack 139b20d8e6c5b496de61f033f642d0e3dbff528d 114 .git/objects/pack/pack-45dcff625845dc0ad702f91d853d0950f9be0eb9.pack 25e18d2c3e3563b690593dcce936302010e6aa7e 12 .git/objects/pack/pack-110f8bab659db6e691a75b6462d043214fd1da92.pack 2bdf67abb163a4ffb2d7f3f0880c9fe5068ce782 270 .git/objects/pack/pack-45dcff625845dc0ad702f91d853d0950f9be0eb9.pack 2f00a404aed7e63d867313d504bd0fccea53fd25 285 .git/objects/pack/pack-45dcff625845dc0ad702f91d853d0950f9be0eb9.pack 5626abf0f72e58d7a153368ba57db4c673c0e171 182 .git/objects/pack/pack-91db7b4b856b00c3e675824c5bc5389b6810037a.pack 7c7cd714e262561f73f3079dfca4e8724682ac21 358 .git/objects/pack/pack-45dcff625845dc0ad702f91d853d0950f9be0eb9.pack 8510665149157c2bc901848c3e0b746954e9cbd9 271 .git/objects/pack/pack-110f8bab659db6e691a75b6462d043214fd1da92.pack a7cddf35737959e1438bc929b665619e9e79bfee 138 .git/objects/pack/pack-91db7b4b856b00c3e675824c5bc5389b6810037a.pack d79ce1670bdcb76e6d1da2ae095e890ccb326ae9 12 .git/objects/pack/pack-91db7b4b856b00c3e675824c5bc5389b6810037a.pack db6165b80a148f78daad30f4e29c7b77fe8f04c2 169 .git/objects/pack/pack-110f8bab659db6e691a75b6462d043214fd1da92.pack f719efd430d52bcfc8566a43b2eb655688d38871 517 .git/objects/pack/pack-45dcff625845dc0ad702f91d853d0950f9be0eb9.pack I'm not sure if it's just a funky interaction with the hacky GIT_TEST_* variables, or if it's a real bug. -Peff