From: Junio C Hamano Date: Tue, 8 Dec 2020 23:11:18 +0000 (-0800) Subject: Merge branch 'tb/idx-midx-race-fix' X-Git-Url: http://git.99rst.org/?a=commitdiff_plain;h=6bac6a1ef9e9c2bcf6f927e2e58e66ef39659e93;p=git.git Merge branch 'tb/idx-midx-race-fix' Processes that access packdata while the .idx file gets removed (e.g. while repacking) did not fail or fall back gracefully as they could. * tb/idx-midx-race-fix: midx.c: protect against disappearing packs packfile.c: protect against disappearing indexes --- 6bac6a1ef9e9c2bcf6f927e2e58e66ef39659e93 diff --cc t/t5319-multi-pack-index.sh index ace469c95c,27c7eb906a..297de502a9 --- a/t/t5319-multi-pack-index.sh +++ b/t/t5319-multi-pack-index.sh @@@ -738,21 -547,30 +738,47 @@@ test_expect_success 'repack --batch-siz ) ' +test_expect_success 'repack --batch-size= repacks everything' ' + ( + cd dup2 && + rm .git/objects/pack/*.keep && + ls .git/objects/pack/*idx >idx-list && + test_line_count = 2 idx-list && + git multi-pack-index repack --batch-size=2000000 && + ls .git/objects/pack/*idx >idx-list && + test_line_count = 3 idx-list && + test-tool read-midx .git/objects | grep idx >midx-list && + test_line_count = 3 midx-list && + git multi-pack-index expire && + ls -al .git/objects/pack/*idx >idx-list && + test_line_count = 1 idx-list + ) +' + + test_expect_success 'load reverse index when missing .idx, .pack' ' + git init repo && + test_when_finished "rm -fr repo" && + ( + cd repo && + + git config core.multiPackIndex true && + + test_commit base && + git repack -ad && + git multi-pack-index write && + + git rev-parse HEAD >tip && + pack=$(ls .git/objects/pack/pack-*.pack) && + idx=$(ls .git/objects/pack/pack-*.idx) && + + mv $idx $idx.bak && + git cat-file --batch-check="%(objectsize:disk)"