Re: [PATCH v5 9/9] repack: exclude cruft pack(s) from the MIDX where possible
- From
Jeff King <peff@peff.net>
- Date
- Jun 21, 2025, 04:35 UTC
- Message-ID
- <20250621043551.GA3002138@coredump.intra.peff.net>
- In-Reply-To
- <6487001f64653d1434890df39b4c4937ea4d0b2c.1750375803.git.me@ttaylorr.com>
On Thu, Jun 19, 2025 at 07:30:33PM -0400, Taylor Blau wrote:
Show 19 quoted lines
> +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