> Jeff King <peff@xxxxxxxx> hat am 16.11.2020 05:10 geschrieben: [...] > So I dunno. I wouldn't be opposed to codifying some of that in > a script, but I can't imagine anybody ever running it unless they > were working on this specific problem. Thanks for the pointers. Below is what I came up with. It passes here. I've replaced awk with cut from the original draft, and also moved the perl script out of the test as I think the quoting is getting way too messy otherwise. And I've added --no-dangling to git fsck as otherwise it takes forever to output the obvious dangling blobs. The unpack limit is mostly for testing the test itself with a smaller amount of blobs. But I still think it is worthwile to force everything into a pack. --- a/t/t1600-index.sh +++ b/t/t1600-index.sh @@ -97,4 +97,34 @@ test_expect_success 'index version config precedence' ' test_index_version 0 true 2 2 ' +{ + echo "#!$SHELL_PATH" + cat <<'EOF' + "$PERL_PATH" -e ' + for (0..154_000_000) { + print "blob\n"; + print "data <<EOF\n"; + print "$_\n"; + print "EOF\n"; + } ' +EOF + +} >dump +chmod +x dump + +test_expect_success EXPENSIVE,PERL 'Test 4GB boundary for the index' ' + test_config fastimport.unpacklimit 0 && + ./dump | git fast-import && + blob=$(echo 0 | git hash-object --stdin) && + git cat-file blob $blob >actual && + echo 0 >expect && + test_cmp expect actual && + idx_pack=$(ls .git/objects/pack/*.idx) && + test_file_not_empty $idx_pack && + final=$(git show-index <$idx_pack | tail -1 | cut -d " " -f2) && + git cat-file blob $final && + git cat-file blob fffffff && + git fsck --strict --no-dangling +' + test_done --