{"thread":{"id":"52503","subject":"[PATCH 01/20] t4054: make hash-size independent","startedAt":"2019-12-21T19:50:07Z","lastAt":"2019-12-27T21:35:38Z","messageCount":28,"participants":["brian m. carlson","Eric Sunshine","Michael Clark","Derrick Stolee"],"isPatch":true,"patchVersion":1,"patchTotal":20},"messages":[{"id":"388718","messageId":"20191221194936.1346664-2-sandals@crustytoothpaste.net","threadId":"52503","inReplyTo":"20191221194936.1346664-1-sandals@crustytoothpaste.net","subject":"[PATCH 01/20] t4054: make hash-size independent","fromName":"brian m. carlson","fromEmail":"sandals@crustytoothpaste.net","sentAt":"2019-12-21T19:49:17Z","receivedAt":"2019-12-21T19:50:07Z","isPatch":true,"sender":{"key":"sandals@crustytoothpaste.net","avatar":"https://avatars.githubusercontent.com/u/497054?v=4"},"body":"Instead of hard-coding the length of an object ID when creating a tree,\ngenerate it based on $ZERO_OID.\n\nSigned-off-by: brian m. carlson <sandals@crustytoothpaste.net>\n---\n t/t4054-diff-bogus-tree.sh | 3 ++-\n 1 file changed, 2 insertions(+), 1 deletion(-)\n\ndiff --git a/t/t4054-diff-bogus-tree.sh b/t/t4054-diff-bogus-tree.sh\nindex fcae82fffa..8c95f152b2 100755\n--- a/t/t4054-diff-bogus-tree.sh\n+++ b/t/t4054-diff-bogus-tree.sh\n@@ -4,8 +4,9 @@ test_description='test diff with a bogus tree containing the null sha1'\n . ./test-lib.sh\n \n test_expect_success 'create bogus tree' '\n+\tname=$(echo $ZERO_OID | sed -e \"s/00/Q/g\") &&\n \tbogus_tree=$(\n-\t\tprintf \"100644 fooQQQQQQQQQQQQQQQQQQQQQ\" |\n+\t\tprintf \"100644 fooQ$name\" |\n \t\tq_to_nul |\n \t\tgit hash-object -w --stdin -t tree\n \t)\n"},{"id":"388719","messageId":"20191221194936.1346664-1-sandals@crustytoothpaste.net","threadId":"52503","inReplyTo":null,"subject":"[PATCH 00/20] SHA-256 test fixes, part 7","fromName":"brian m. carlson","fromEmail":"sandals@crustytoothpaste.net","sentAt":"2019-12-21T19:49:16Z","receivedAt":"2019-12-21T19:50:07Z","isPatch":true,"sender":{"key":"sandals@crustytoothpaste.net","avatar":"https://avatars.githubusercontent.com/u/497054?v=4"},"body":"This is the seventh in a series of test fixes to make our testsuite work\nwith SHA-256.  Included in this series are fixes to a variety of tests\nfrom t4054 to t5604.\n\nI don't expect any of these to be terribly controversial (or, honestly,\nthat exciting), but of course any feedback is welcome.\n\nThere will likely be two or three more series of test fix patches coming\ndown the line.  I'll try to be a bit better about getting them sent out\nin a timely manner.\n\nI fully realize that we're entering a time of the year when many people\nwill be off and with family and friends (and this is true for me as\nwell), so it's fine if folks don't get to this series right away.  As is\nusual with these series, there will likely be a couple versions, so\nthere will be plenty of time to incorporate any feedback.  Please feel\nfree to respond when it's convenient for you.\n\nbrian m. carlson (20):\n  t4054: make hash-size independent\n  t4066: compute index line in diffs\n  t4134: compute appropriate length constant\n  t4200: make hash size independent\n  t4202: abstract away SHA-1-specific constants\n  t4204: make hash size independent\n  t4300: abstract away SHA-1-specific constants\n  t5318: update for SHA-256\n  t5319: change invalid offset for SHA-256 compatibility\n  t5319: make test work with SHA-256\n  t5324: make hash size independent\n  t5504: make hash algorithm independent\n  t5510: make hash size independent\n  t5512: abstract away SHA-1-specific constants\n  t5530: compute results based on object length\n  t5537: make hash size independent\n  t5540: make hash size independent\n  t5562: use $ZERO_OID\n  t5601: switch into repository to hash object\n  t5604: make hash independent\n\n t/t4054-diff-bogus-tree.sh             |   3 +-\n t/t4066-diff-emit-delay.sh             |  10 +-\n t/t4134-apply-submodule.sh             |   5 +-\n t/t4200-rerere.sh                      |   3 +-\n t/t4202-log.sh                         | 127 +++++++++--------\n t/t4204-patch-id.sh                    |   2 +-\n t/t4300-merge-tree.sh                  | 188 ++++++++++++-------------\n t/t5318-commit-graph.sh                |   2 +-\n t/t5319-multi-pack-index.sh            |  26 +++-\n t/t5324-split-commit-graph.sh          |  13 +-\n t/t5504-fetch-receive-strict.sh        |  17 +--\n t/t5510-fetch.sh                       |   9 +-\n t/t5512-ls-remote.sh                   |  17 +--\n t/t5530-upload-pack-error.sh           |  26 ++--\n t/t5537-fetch-shallow.sh               |   8 +-\n t/t5540-http-push-webdav.sh            |   6 +-\n t/t5562-http-backend-content-length.sh |   2 +-\n t/t5601-clone.sh                       |   4 +-\n t/t5604-clone-reference.sh             |   5 +-\n 19 files changed, 254 insertions(+), 219 deletions(-)\n\n"},{"id":"388720","messageId":"20191221194936.1346664-4-sandals@crustytoothpaste.net","threadId":"52503","inReplyTo":"20191221194936.1346664-1-sandals@crustytoothpaste.net","subject":"[PATCH 03/20] t4134: compute appropriate length constant","fromName":"brian m. carlson","fromEmail":"sandals@crustytoothpaste.net","sentAt":"2019-12-21T19:49:19Z","receivedAt":"2019-12-21T19:50:09Z","isPatch":true,"sender":{"key":"sandals@crustytoothpaste.net","avatar":"https://avatars.githubusercontent.com/u/497054?v=4"},"body":"Instead of using a specific invalid hard-coded object ID, generate one\nof the appropriate length by looking one up in the translation tables.\n\nSigned-off-by: brian m. carlson <sandals@crustytoothpaste.net>\n---\n t/t4134-apply-submodule.sh | 5 +++--\n 1 file changed, 3 insertions(+), 2 deletions(-)\n\ndiff --git a/t/t4134-apply-submodule.sh b/t/t4134-apply-submodule.sh\nindex 0043930ca6..99ed4cc546 100755\n--- a/t/t4134-apply-submodule.sh\n+++ b/t/t4134-apply-submodule.sh\n@@ -8,6 +8,7 @@ test_description='git apply submodule tests'\n . ./test-lib.sh\n \n test_expect_success setup '\n+\ttest_oid_init &&\n \tcat > create-sm.patch <<EOF &&\n diff --git a/dir/sm b/dir/sm\n new file mode 160000\n@@ -15,7 +16,7 @@ index 0000000..0123456\n --- /dev/null\n +++ b/dir/sm\n @@ -0,0 +1 @@\n-+Subproject commit 0123456789abcdef0123456789abcdef01234567\n++Subproject commit $(test_oid numeric)\n EOF\n \tcat > remove-sm.patch <<EOF\n diff --git a/dir/sm b/dir/sm\n@@ -24,7 +25,7 @@ index 0123456..0000000\n --- a/dir/sm\n +++ /dev/null\n @@ -1 +0,0 @@\n--Subproject commit 0123456789abcdef0123456789abcdef01234567\n+-Subproject commit $(test_oid numeric)\n EOF\n '\n \n"},{"id":"388721","messageId":"20191221194936.1346664-3-sandals@crustytoothpaste.net","threadId":"52503","inReplyTo":"20191221194936.1346664-1-sandals@crustytoothpaste.net","subject":"[PATCH 02/20] t4066: compute index line in diffs","fromName":"brian m. carlson","fromEmail":"sandals@crustytoothpaste.net","sentAt":"2019-12-21T19:49:18Z","receivedAt":"2019-12-21T19:50:09Z","isPatch":true,"sender":{"key":"sandals@crustytoothpaste.net","avatar":"https://avatars.githubusercontent.com/u/497054?v=4"},"body":"Since the object ID used in the index line will differ between different\nalgorithms, compute these values instead of hard-coding them.\n\nSigned-off-by: brian m. carlson <sandals@crustytoothpaste.net>\n---\n t/t4066-diff-emit-delay.sh | 10 +++++-----\n 1 file changed, 5 insertions(+), 5 deletions(-)\n\ndiff --git a/t/t4066-diff-emit-delay.sh b/t/t4066-diff-emit-delay.sh\nindex 5df6b5e64e..6331f63b12 100755\n--- a/t/t4066-diff-emit-delay.sh\n+++ b/t/t4066-diff-emit-delay.sh\n@@ -18,7 +18,7 @@ test_expect_success 'set up history with a merge' '\n '\n \n test_expect_success 'log --cc -p --stat --color-moved' '\n-\tcat >expect <<-\\EOF &&\n+\tcat >expect <<-EOF &&\n \tcommit D\n \t---\n \t D.t | 1 +\n@@ -26,7 +26,7 @@ test_expect_success 'log --cc -p --stat --color-moved' '\n \n \tdiff --git a/D.t b/D.t\n \tnew file mode 100644\n-\tindex 0000000..1784810\n+\tindex 0000000..$(git rev-parse --short D:D.t)\n \t--- /dev/null\n \t+++ b/D.t\n \t@@ -0,0 +1 @@\n@@ -42,7 +42,7 @@ test_expect_success 'log --cc -p --stat --color-moved' '\n \n \tdiff --git a/C.t b/C.t\n \tnew file mode 100644\n-\tindex 0000000..3cc58df\n+\tindex 0000000..$(git rev-parse --short C:C.t)\n \t--- /dev/null\n \t+++ b/C.t\n \t@@ -0,0 +1 @@\n@@ -54,7 +54,7 @@ test_expect_success 'log --cc -p --stat --color-moved' '\n \n \tdiff --git a/B.t b/B.t\n \tnew file mode 100644\n-\tindex 0000000..223b783\n+\tindex 0000000..$(git rev-parse --short B:B.t)\n \t--- /dev/null\n \t+++ b/B.t\n \t@@ -0,0 +1 @@\n@@ -66,7 +66,7 @@ test_expect_success 'log --cc -p --stat --color-moved' '\n \n \tdiff --git a/A.t b/A.t\n \tnew file mode 100644\n-\tindex 0000000..f70f10e\n+\tindex 0000000..$(git rev-parse --short A:A.t)\n \t--- /dev/null\n \t+++ b/A.t\n \t@@ -0,0 +1 @@\n"},{"id":"388722","messageId":"20191221194936.1346664-5-sandals@crustytoothpaste.net","threadId":"52503","inReplyTo":"20191221194936.1346664-1-sandals@crustytoothpaste.net","subject":"[PATCH 04/20] t4200: make hash size independent","fromName":"brian m. carlson","fromEmail":"sandals@crustytoothpaste.net","sentAt":"2019-12-21T19:49:20Z","receivedAt":"2019-12-21T19:50:11Z","isPatch":true,"sender":{"key":"sandals@crustytoothpaste.net","avatar":"https://avatars.githubusercontent.com/u/497054?v=4"},"body":"Instead of hard-coding a fixed length example object ID in the test,\nlook one up using the translation tables.\n\nSigned-off-by: brian m. carlson <sandals@crustytoothpaste.net>\n---\n t/t4200-rerere.sh | 3 ++-\n 1 file changed, 2 insertions(+), 1 deletion(-)\n\ndiff --git a/t/t4200-rerere.sh b/t/t4200-rerere.sh\nindex 55b7750ade..831d424c47 100755\n--- a/t/t4200-rerere.sh\n+++ b/t/t4200-rerere.sh\n@@ -25,6 +25,7 @@ test_description='git rerere\n . ./test-lib.sh\n \n test_expect_success 'setup' '\n+\ttest_oid_init &&\n \tcat >a1 <<-\\EOF &&\n \tSome title\n \t==========\n@@ -210,7 +211,7 @@ test_expect_success 'set up for garbage collection tests' '\n \techo Hello >$rr/preimage &&\n \techo World >$rr/postimage &&\n \n-\tsha2=4000000000000000000000000000000000000000 &&\n+\tsha2=$(test_oid deadbeef) &&\n \trr2=.git/rr-cache/$sha2 &&\n \tmkdir $rr2 &&\n \techo Hello >$rr2/preimage &&\n"},{"id":"388723","messageId":"20191221194936.1346664-7-sandals@crustytoothpaste.net","threadId":"52503","inReplyTo":"20191221194936.1346664-1-sandals@crustytoothpaste.net","subject":"[PATCH 06/20] t4204: make hash size independent","fromName":"brian m. carlson","fromEmail":"sandals@crustytoothpaste.net","sentAt":"2019-12-21T19:49:22Z","receivedAt":"2019-12-21T19:50:11Z","isPatch":true,"sender":{"key":"sandals@crustytoothpaste.net","avatar":"https://avatars.githubusercontent.com/u/497054?v=4"},"body":"Use $OID_REGEX instead of a hard-coded regular expression.\n\nSigned-off-by: brian m. carlson <sandals@crustytoothpaste.net>\n---\n t/t4204-patch-id.sh | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/t/t4204-patch-id.sh b/t/t4204-patch-id.sh\nindex 0288c17ec6..8ff8bd84c7 100755\n--- a/t/t4204-patch-id.sh\n+++ b/t/t4204-patch-id.sh\n@@ -25,7 +25,7 @@ test_expect_success 'setup' '\n \n test_expect_success 'patch-id output is well-formed' '\n \tgit log -p -1 | git patch-id >output &&\n-\tgrep \"^[a-f0-9]\\{40\\} $(git rev-parse HEAD)$\" output\n+\tgrep \"^$OID_REGEX $(git rev-parse HEAD)$\" output\n '\n \n #calculate patch id. Make sure output is not empty.\n"},{"id":"388724","messageId":"20191221194936.1346664-9-sandals@crustytoothpaste.net","threadId":"52503","inReplyTo":"20191221194936.1346664-1-sandals@crustytoothpaste.net","subject":"[PATCH 08/20] t5318: update for SHA-256","fromName":"brian m. carlson","fromEmail":"sandals@crustytoothpaste.net","sentAt":"2019-12-21T19:49:24Z","receivedAt":"2019-12-21T19:50:13Z","isPatch":true,"sender":{"key":"sandals@crustytoothpaste.net","avatar":"https://avatars.githubusercontent.com/u/497054?v=4"},"body":"When running with SHA-256 as the hash algorithm, the hash version octet\nis 2 instead of 1.  Pick the right value depending on the hash algorithm\nand use it where we look for the existing value.  To ensure the test\nchecking for invalid data passes, use 3 as the test value for an invalid\nhash version.\n\nSigned-off-by: brian m. carlson <sandals@crustytoothpaste.net>\n---\n t/t5318-commit-graph.sh | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/t/t5318-commit-graph.sh b/t/t5318-commit-graph.sh\nindex 3f03de6018..81cf118cb6 100755\n--- a/t/t5318-commit-graph.sh\n+++ b/t/t5318-commit-graph.sh\n@@ -481,7 +481,7 @@ test_expect_success 'detect bad version' '\n '\n \n test_expect_success 'detect bad hash version' '\n-\tcorrupt_graph_and_verify $GRAPH_BYTE_HASH \"\\02\" \\\n+\tcorrupt_graph_and_verify $GRAPH_BYTE_HASH \"\\03\" \\\n \t\t\"hash version\"\n '\n \n"},{"id":"388725","messageId":"20191221194936.1346664-10-sandals@crustytoothpaste.net","threadId":"52503","inReplyTo":"20191221194936.1346664-1-sandals@crustytoothpaste.net","subject":"[PATCH 09/20] t5319: change invalid offset for SHA-256 compatibility","fromName":"brian m. carlson","fromEmail":"sandals@crustytoothpaste.net","sentAt":"2019-12-21T19:49:25Z","receivedAt":"2019-12-21T19:50:15Z","isPatch":true,"sender":{"key":"sandals@crustytoothpaste.net","avatar":"https://avatars.githubusercontent.com/u/497054?v=4"},"body":"When using SHA-1, the existing value of the byte we use is 0x13, so\nwriting the byte 0x07 serves to corrupt the test and verify that we\ndetect corruption.  However, when we use SHA-256, the value at that\noffset is already 0x07, so our \"corruption\" doesn't work and the test\nfails to detect it.\n\nTo provide a value that is truly out of range, let's use 0xff, which is\nnot likely to be a valid value as the high byte of a two-byte offset in\na multi-pack index this small.\n\nSigned-off-by: brian m. carlson <sandals@crustytoothpaste.net>\n---\n t/t5319-multi-pack-index.sh | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/t/t5319-multi-pack-index.sh b/t/t5319-multi-pack-index.sh\nindex cd2f87be6a..464bb68e89 100755\n--- a/t/t5319-multi-pack-index.sh\n+++ b/t/t5319-multi-pack-index.sh\n@@ -304,12 +304,12 @@ test_expect_success 'verify incorrect pack-int-id' '\n '\n \n test_expect_success 'verify incorrect offset' '\n-\tcorrupt_midx_and_verify $MIDX_BYTE_OFFSET \"\\07\" $objdir \\\n+\tcorrupt_midx_and_verify $MIDX_BYTE_OFFSET \"\\377\" $objdir \\\n \t\t\"incorrect object offset\"\n '\n \n test_expect_success 'git-fsck incorrect offset' '\n-\tcorrupt_midx_and_verify $MIDX_BYTE_OFFSET \"\\07\" $objdir \\\n+\tcorrupt_midx_and_verify $MIDX_BYTE_OFFSET \"\\377\" $objdir \\\n \t\t\"incorrect object offset\" \\\n \t\t\"git -c core.multipackindex=true fsck\"\n '\n"},{"id":"388726","messageId":"20191221194936.1346664-8-sandals@crustytoothpaste.net","threadId":"52503","inReplyTo":"20191221194936.1346664-1-sandals@crustytoothpaste.net","subject":"[PATCH 07/20] t4300: abstract away SHA-1-specific constants","fromName":"brian m. carlson","fromEmail":"sandals@crustytoothpaste.net","sentAt":"2019-12-21T19:49:23Z","receivedAt":"2019-12-21T19:50:15Z","isPatch":true,"sender":{"key":"sandals@crustytoothpaste.net","avatar":"https://avatars.githubusercontent.com/u/497054?v=4"},"body":"Adjust the test so that it computes values for object IDs instead of\nusing hard-coded hashes.  Move the heredocs later in the tests so we can\ntake advantage of computed values.\n\nSigned-off-by: brian m. carlson <sandals@crustytoothpaste.net>\n---\n t/t4300-merge-tree.sh | 188 +++++++++++++++++++++---------------------\n 1 file changed, 94 insertions(+), 94 deletions(-)\n\ndiff --git a/t/t4300-merge-tree.sh b/t/t4300-merge-tree.sh\nindex d87cc7d9ef..e59601e5fe 100755\n--- a/t/t4300-merge-tree.sh\n+++ b/t/t4300-merge-tree.sh\n@@ -11,16 +11,16 @@ test_expect_success setup '\n '\n \n test_expect_success 'file add A, !B' '\n-\tcat >expected <<\\EXPECTED &&\n+\tgit reset --hard initial &&\n+\ttest_commit \"add-a-not-b\" \"ONE\" \"AAA\" &&\n+\tgit merge-tree initial initial add-a-not-b >actual &&\n+\tcat >expected <<EXPECTED &&\n added in remote\n-  their  100644 43d5a8ed6ef6c00ff775008633f95787d088285d ONE\n+  their  100644 $(git rev-parse HEAD:ONE) ONE\n @@ -0,0 +1 @@\n +AAA\n EXPECTED\n \n-\tgit reset --hard initial &&\n-\ttest_commit \"add-a-not-b\" \"ONE\" \"AAA\" &&\n-\tgit merge-tree initial initial add-a-not-b >actual &&\n \ttest_cmp expected actual\n '\n \n@@ -41,10 +41,15 @@ test_expect_success 'file add A, B (same)' '\n '\n \n test_expect_success 'file add A, B (different)' '\n-\tcat >expected <<\\EXPECTED &&\n+\tgit reset --hard initial &&\n+\ttest_commit \"add-a-b-diff-A\" \"ONE\" \"AAA\" &&\n+\tgit reset --hard initial &&\n+\ttest_commit \"add-a-b-diff-B\" \"ONE\" \"BBB\" &&\n+\tgit merge-tree initial add-a-b-diff-A add-a-b-diff-B >actual &&\n+\tcat >expected <<EXPECTED &&\n added in both\n-  our    100644 43d5a8ed6ef6c00ff775008633f95787d088285d ONE\n-  their  100644 ba629238ca89489f2b350e196ca445e09d8bb834 ONE\n+  our    100644 $(git rev-parse add-a-b-diff-A:ONE) ONE\n+  their  100644 $(git rev-parse add-a-b-diff-B:ONE) ONE\n @@ -1 +1,5 @@\n +<<<<<<< .our\n  AAA\n@@ -53,11 +58,6 @@ added in both\n +>>>>>>> .their\n EXPECTED\n \n-\tgit reset --hard initial &&\n-\ttest_commit \"add-a-b-diff-A\" \"ONE\" \"AAA\" &&\n-\tgit reset --hard initial &&\n-\ttest_commit \"add-a-b-diff-B\" \"ONE\" \"BBB\" &&\n-\tgit merge-tree initial add-a-b-diff-A add-a-b-diff-B >actual &&\n \ttest_cmp expected actual\n '\n \n@@ -69,18 +69,18 @@ test_expect_success 'file change A, !B' '\n '\n \n test_expect_success 'file change !A, B' '\n-\tcat >expected <<\\EXPECTED &&\n+\tgit reset --hard initial &&\n+\ttest_commit \"change-not-a-b\" \"initial-file\" \"BBB\" &&\n+\tgit merge-tree initial initial change-not-a-b >actual &&\n+\tcat >expected <<EXPECTED &&\n merged\n-  result 100644 ba629238ca89489f2b350e196ca445e09d8bb834 initial-file\n-  our    100644 e79c5e8f964493290a409888d5413a737e8e5dd5 initial-file\n+  result 100644 $(git rev-parse change-a-not-b:initial-file) initial-file\n+  our    100644 $(git rev-parse initial:initial-file       ) initial-file\n @@ -1 +1 @@\n -initial\n +BBB\n EXPECTED\n \n-\tgit reset --hard initial &&\n-\ttest_commit \"change-not-a-b\" \"initial-file\" \"BBB\" &&\n-\tgit merge-tree initial initial change-not-a-b >actual &&\n \ttest_cmp expected actual\n '\n \n@@ -94,11 +94,16 @@ test_expect_success 'file change A, B (same)' '\n '\n \n test_expect_success 'file change A, B (different)' '\n-\tcat >expected <<\\EXPECTED &&\n+\tgit reset --hard initial &&\n+\ttest_commit \"change-a-b-diff-A\" \"initial-file\" \"AAA\" &&\n+\tgit reset --hard initial &&\n+\ttest_commit \"change-a-b-diff-B\" \"initial-file\" \"BBB\" &&\n+\tgit merge-tree initial change-a-b-diff-A change-a-b-diff-B >actual &&\n+\tcat >expected <<EXPECTED &&\n changed in both\n-  base   100644 e79c5e8f964493290a409888d5413a737e8e5dd5 initial-file\n-  our    100644 43d5a8ed6ef6c00ff775008633f95787d088285d initial-file\n-  their  100644 ba629238ca89489f2b350e196ca445e09d8bb834 initial-file\n+  base   100644 $(git rev-parse initial:initial-file          ) initial-file\n+  our    100644 $(git rev-parse change-a-b-diff-A:initial-file) initial-file\n+  their  100644 $(git rev-parse change-a-b-diff-B:initial-file) initial-file\n @@ -1 +1,5 @@\n +<<<<<<< .our\n  AAA\n@@ -107,34 +112,10 @@ changed in both\n +>>>>>>> .their\n EXPECTED\n \n-\tgit reset --hard initial &&\n-\ttest_commit \"change-a-b-diff-A\" \"initial-file\" \"AAA\" &&\n-\tgit reset --hard initial &&\n-\ttest_commit \"change-a-b-diff-B\" \"initial-file\" \"BBB\" &&\n-\tgit merge-tree initial change-a-b-diff-A change-a-b-diff-B >actual &&\n \ttest_cmp expected actual\n '\n \n test_expect_success 'file change A, B (mixed)' '\n-\tcat >expected <<\\EXPECTED &&\n-changed in both\n-  base   100644 f4f1f998c7776568c4ff38f516d77fef9399b5a7 ONE\n-  our    100644 af14c2c3475337c73759d561ef70b59e5c731176 ONE\n-  their  100644 372d761493f524d44d59bd24700c3bdf914c973c ONE\n-@@ -7,7 +7,11 @@\n- AAA\n- AAA\n- AAA\n-+<<<<<<< .our\n- BBB\n-+=======\n-+CCC\n-+>>>>>>> .their\n- AAA\n- AAA\n- AAA\n-EXPECTED\n-\n \tgit reset --hard initial &&\n \ttest_commit \"change-a-b-mix-base\" \"ONE\" \"\n AAA\n@@ -159,6 +140,26 @@ AAA\" &&\n \t\t\"$(sed -e \"1{s/AAA/BBB/;}\" -e \"10{s/AAA/CCC/;}\" <ONE)\" &&\n \tgit merge-tree change-a-b-mix-base change-a-b-mix-A change-a-b-mix-B \\\n \t\t>actual &&\n+\n+\tcat >expected <<EXPECTED &&\n+changed in both\n+  base   100644 $(git rev-parse change-a-b-mix-base:ONE) ONE\n+  our    100644 $(git rev-parse change-a-b-mix-A:ONE   ) ONE\n+  their  100644 $(git rev-parse change-a-b-mix-B:ONE   ) ONE\n+@@ -7,7 +7,11 @@\n+ AAA\n+ AAA\n+ AAA\n++<<<<<<< .our\n+ BBB\n++=======\n++CCC\n++>>>>>>> .their\n+ AAA\n+ AAA\n+ AAA\n+EXPECTED\n+\n \ttest_cmp expected actual\n '\n \n@@ -173,20 +174,20 @@ test_expect_success 'file remove A, !B' '\n '\n \n test_expect_success 'file remove !A, B' '\n-\tcat >expected <<\\EXPECTED &&\n-removed in remote\n-  base   100644 43d5a8ed6ef6c00ff775008633f95787d088285d ONE\n-  our    100644 43d5a8ed6ef6c00ff775008633f95787d088285d ONE\n-@@ -1 +0,0 @@\n--AAA\n-EXPECTED\n-\n \tgit reset --hard initial &&\n \ttest_commit \"rm-not-a-b-base\" \"ONE\" \"AAA\" &&\n \tgit rm ONE &&\n \tgit commit -m \"rm-not-a-b\" &&\n \tgit tag \"rm-not-a-b\" &&\n \tgit merge-tree rm-a-not-b-base rm-a-not-b-base rm-a-not-b >actual &&\n+\tcat >expected <<EXPECTED &&\n+removed in remote\n+  base   100644 $(git rev-parse rm-a-not-b-base:ONE) ONE\n+  our    100644 $(git rev-parse rm-a-not-b-base:ONE) ONE\n+@@ -1 +0,0 @@\n+-AAA\n+EXPECTED\n+\n \ttest_cmp expected actual\n '\n \n@@ -201,14 +202,6 @@ test_expect_success 'file remove A, B (same)' '\n '\n \n test_expect_success 'file change A, remove B' '\n-\tcat >expected <<\\EXPECTED &&\n-removed in remote\n-  base   100644 43d5a8ed6ef6c00ff775008633f95787d088285d ONE\n-  our    100644 ba629238ca89489f2b350e196ca445e09d8bb834 ONE\n-@@ -1 +0,0 @@\n--BBB\n-EXPECTED\n-\n \tgit reset --hard initial &&\n \ttest_commit \"change-a-rm-b-base\" \"ONE\" \"AAA\" &&\n \ttest_commit \"change-a-rm-b-A\" \"ONE\" \"BBB\" &&\n@@ -218,16 +211,18 @@ EXPECTED\n \tgit tag \"change-a-rm-b-B\" &&\n \tgit merge-tree change-a-rm-b-base change-a-rm-b-A change-a-rm-b-B \\\n \t\t>actual &&\n+\tcat >expected <<EXPECTED &&\n+removed in remote\n+  base   100644 $(git rev-parse change-a-rm-b-base:ONE) ONE\n+  our    100644 $(git rev-parse change-a-rm-b-A:ONE   ) ONE\n+@@ -1 +0,0 @@\n+-BBB\n+EXPECTED\n+\n \ttest_cmp expected actual\n '\n \n test_expect_success 'file remove A, change B' '\n-\tcat >expected <<\\EXPECTED &&\n-removed in local\n-  base   100644 43d5a8ed6ef6c00ff775008633f95787d088285d ONE\n-  their  100644 ba629238ca89489f2b350e196ca445e09d8bb834 ONE\n-EXPECTED\n-\n \tgit reset --hard initial &&\n \ttest_commit \"rm-a-change-b-base\" \"ONE\" \"AAA\" &&\n \n@@ -238,6 +233,11 @@ EXPECTED\n \ttest_commit \"rm-a-change-b-B\" \"ONE\" \"BBB\" &&\n \tgit merge-tree rm-a-change-b-base rm-a-change-b-A rm-a-change-b-B \\\n \t\t>actual &&\n+\tcat >expected <<EXPECTED &&\n+removed in local\n+  base   100644 $(git rev-parse rm-a-change-b-base:ONE) ONE\n+  their  100644 $(git rev-parse rm-a-change-b-B:ONE   ) ONE\n+EXPECTED\n \ttest_cmp expected actual\n '\n \n@@ -250,10 +250,17 @@ test_expect_success 'tree add A, B (same)' '\n '\n \n test_expect_success 'tree add A, B (different)' '\n-\tcat >expect <<-\\EOF &&\n+\tgit reset --hard initial &&\n+\tmkdir sub &&\n+\ttest_commit \"add sub/file\" \"sub/file\" \"AAA\" add-tree-a-b-A &&\n+\tgit reset --hard initial &&\n+\tmkdir sub &&\n+\ttest_commit \"add sub/file\" \"sub/file\" \"BBB\" add-tree-a-b-B &&\n+\tgit merge-tree initial add-tree-a-b-A add-tree-a-b-B >actual &&\n+\tcat >expect <<-EOF &&\n \tadded in both\n-\t  our    100644 43d5a8ed6ef6c00ff775008633f95787d088285d sub/file\n-\t  their  100644 ba629238ca89489f2b350e196ca445e09d8bb834 sub/file\n+\t  our    100644 $(git rev-parse add-tree-a-b-A:sub/file) sub/file\n+\t  their  100644 $(git rev-parse add-tree-a-b-B:sub/file) sub/file\n \t@@ -1 +1,5 @@\n \t+<<<<<<< .our\n \t AAA\n@@ -261,24 +268,10 @@ test_expect_success 'tree add A, B (different)' '\n \t+BBB\n \t+>>>>>>> .their\n \tEOF\n-\tgit reset --hard initial &&\n-\tmkdir sub &&\n-\ttest_commit \"add sub/file\" \"sub/file\" \"AAA\" add-tree-a-b-A &&\n-\tgit reset --hard initial &&\n-\tmkdir sub &&\n-\ttest_commit \"add sub/file\" \"sub/file\" \"BBB\" add-tree-a-b-B &&\n-\tgit merge-tree initial add-tree-a-b-A add-tree-a-b-B >actual &&\n \ttest_cmp expect actual\n '\n \n test_expect_success 'tree unchanged A, removed B' '\n-\tcat >expect <<-\\EOF &&\n-\tremoved in remote\n-\t  base   100644 43d5a8ed6ef6c00ff775008633f95787d088285d sub/file\n-\t  our    100644 43d5a8ed6ef6c00ff775008633f95787d088285d sub/file\n-\t@@ -1 +0,0 @@\n-\t-AAA\n-\tEOF\n \tgit reset --hard initial &&\n \tmkdir sub &&\n \ttest_commit \"add sub/file\" \"sub/file\" \"AAA\" tree-remove-b-initial &&\n@@ -287,6 +280,13 @@ test_expect_success 'tree unchanged A, removed B' '\n \tgit commit -m \"remove sub/file\" &&\n \tgit tag tree-remove-b-B &&\n \tgit merge-tree tree-remove-b-initial tree-remove-b-initial tree-remove-b-B >actual &&\n+\tcat >expect <<-EOF &&\n+\tremoved in remote\n+\t  base   100644 $(git rev-parse tree-remove-b-initial:sub/file) sub/file\n+\t  our    100644 $(git rev-parse tree-remove-b-initial:sub/file) sub/file\n+\t@@ -1 +0,0 @@\n+\t-AAA\n+\tEOF\n \ttest_cmp expect actual\n '\n \n@@ -296,14 +296,14 @@ test_expect_success 'turn file to tree' '\n \tmkdir initial-file &&\n \ttest_commit \"turn-file-to-tree\" \"initial-file/ONE\" \"CCC\" &&\n \tgit merge-tree initial initial turn-file-to-tree >actual &&\n-\tcat >expect <<-\\EOF &&\n+\tcat >expect <<-EOF &&\n \tadded in remote\n-\t  their  100644 43aa4fdec31eb92e1fdc2f0ce6ea9ddb7c32bcf7 initial-file/ONE\n+\t  their  100644 $(git rev-parse turn-file-to-tree:initial-file/ONE) initial-file/ONE\n \t@@ -0,0 +1 @@\n \t+CCC\n \tremoved in remote\n-\t  base   100644 e79c5e8f964493290a409888d5413a737e8e5dd5 initial-file\n-\t  our    100644 e79c5e8f964493290a409888d5413a737e8e5dd5 initial-file\n+\t  base   100644 $(git rev-parse initial:initial-file) initial-file\n+\t  our    100644 $(git rev-parse initial:initial-file) initial-file\n \t@@ -1 +0,0 @@\n \t-initial\n \tEOF\n@@ -318,14 +318,14 @@ test_expect_success 'turn tree to file' '\n \trm -fr dir &&\n \ttest_commit \"make-file\" \"dir\" \"CCC\" &&\n \tgit merge-tree add-tree add-another-tree make-file >actual &&\n-\tcat >expect <<-\\EOF &&\n+\tcat >expect <<-EOF &&\n \tremoved in remote\n-\t  base   100644 43d5a8ed6ef6c00ff775008633f95787d088285d dir/path\n-\t  our    100644 43d5a8ed6ef6c00ff775008633f95787d088285d dir/path\n+\t  base   100644 $(git rev-parse add-tree:dir/path) dir/path\n+\t  our    100644 $(git rev-parse add-tree:dir/path) dir/path\n \t@@ -1 +0,0 @@\n \t-AAA\n \tadded in remote\n-\t  their  100644 43aa4fdec31eb92e1fdc2f0ce6ea9ddb7c32bcf7 dir\n+\t  their  100644 $(git rev-parse make-file:dir) dir\n \t@@ -0,0 +1 @@\n \t+CCC\n \tEOF\n"},{"id":"388727","messageId":"20191221194936.1346664-12-sandals@crustytoothpaste.net","threadId":"52503","inReplyTo":"20191221194936.1346664-1-sandals@crustytoothpaste.net","subject":"[PATCH 11/20] t5324: make hash size independent","fromName":"brian m. carlson","fromEmail":"sandals@crustytoothpaste.net","sentAt":"2019-12-21T19:49:27Z","receivedAt":"2019-12-21T19:50:15Z","isPatch":true,"sender":{"key":"sandals@crustytoothpaste.net","avatar":"https://avatars.githubusercontent.com/u/497054?v=4"},"body":"There are some offsets in the commit graph files used to corrupt data.\nCompute these offsets for both SHA-1 and SHA-256 so that the test works\nwith either.\n\nSigned-off-by: brian m. carlson <sandals@crustytoothpaste.net>\n---\n t/t5324-split-commit-graph.sh | 13 ++++++++++---\n 1 file changed, 10 insertions(+), 3 deletions(-)\n\ndiff --git a/t/t5324-split-commit-graph.sh b/t/t5324-split-commit-graph.sh\nindex c24823431f..53b2e6b455 100755\n--- a/t/t5324-split-commit-graph.sh\n+++ b/t/t5324-split-commit-graph.sh\n@@ -11,7 +11,14 @@ test_expect_success 'setup repo' '\n \tgit config gc.writeCommitGraph false &&\n \tinfodir=\".git/objects/info\" &&\n \tgraphdir=\"$infodir/commit-graphs\" &&\n-\ttest_oid_init\n+\ttest_oid_init &&\n+\ttest_oid_cache <<-EOM\n+\tshallow sha1:1760\n+\tshallow sha256:2064\n+\n+\tbase sha1:1376\n+\tbase sha256:1496\n+\tEOM\n '\n \n graph_read_expect() {\n@@ -248,7 +255,7 @@ test_expect_success 'verify hashes along chain, even in shallow' '\n \t\tcd verify &&\n \t\tgit commit-graph verify &&\n \t\tbase_file=$graphdir/graph-$(head -n 1 $graphdir/commit-graph-chain).graph &&\n-\t\tcorrupt_file \"$base_file\" 1760 \"\\01\" &&\n+\t\tcorrupt_file \"$base_file\" $(test_oid shallow) \"\\01\" &&\n \t\ttest_must_fail git commit-graph verify --shallow 2>test_err &&\n \t\tgrep -v \"^+\" test_err >err &&\n \t\ttest_i18ngrep \"incorrect checksum\" err\n@@ -275,7 +282,7 @@ test_expect_success 'warn on base graph chunk incorrect' '\n \t\tcd base-chunk &&\n \t\tgit commit-graph verify &&\n \t\tbase_file=$graphdir/graph-$(tail -n 1 $graphdir/commit-graph-chain).graph &&\n-\t\tcorrupt_file \"$base_file\" 1376 \"\\01\" &&\n+\t\tcorrupt_file \"$base_file\" $(test_oid base) \"\\01\" &&\n \t\tgit commit-graph verify --shallow 2>test_err &&\n \t\tgrep -v \"^+\" test_err >err &&\n \t\ttest_i18ngrep \"commit-graph chain does not match\" err\n"},{"id":"388728","messageId":"20191221194936.1346664-11-sandals@crustytoothpaste.net","threadId":"52503","inReplyTo":"20191221194936.1346664-1-sandals@crustytoothpaste.net","subject":"[PATCH 10/20] t5319: make test work with SHA-256","fromName":"brian m. carlson","fromEmail":"sandals@crustytoothpaste.net","sentAt":"2019-12-21T19:49:26Z","receivedAt":"2019-12-21T19:50:17Z","isPatch":true,"sender":{"key":"sandals@crustytoothpaste.net","avatar":"https://avatars.githubusercontent.com/u/497054?v=4"},"body":"This test corrupts various locations in a multi-pack index to test\nvarious error responses.  However, these offsets differ between SHA-1\nindexes and SHA-256 indexes due to differences in object length.  Use\ntest_oid to look up the correct offsets based on the algorithm.\n---\n t/t5319-multi-pack-index.sh | 22 ++++++++++++++++++----\n 1 file changed, 18 insertions(+), 4 deletions(-)\n\ndiff --git a/t/t5319-multi-pack-index.sh b/t/t5319-multi-pack-index.sh\nindex 464bb68e89..43a7a66c9d 100755\n--- a/t/t5319-multi-pack-index.sh\n+++ b/t/t5319-multi-pack-index.sh\n@@ -28,6 +28,20 @@ midx_read_expect () {\n \ttest_cmp expect actual\n }\n \n+test_expect_success 'setup' '\n+\ttest_oid_init &&\n+\ttest_oid_cache <<-EOF\n+\tidxoff sha1:2999\n+\tidxoff sha256:3739\n+\n+\tpacknameoff sha1:652\n+\tpacknameoff sha256:940\n+\n+\tfanoutoff sha1:1\n+\tfanoutoff sha256:3\n+\tEOF\n+'\n+\n test_expect_success 'write midx with no packs' '\n \ttest_when_finished rm -f pack/multi-pack-index &&\n \tgit multi-pack-index --object-dir=. write &&\n@@ -225,7 +239,7 @@ test_expect_success 'verify bad signature' '\n \t\t\"multi-pack-index signature\"\n '\n \n-HASH_LEN=20\n+HASH_LEN=$(test_oid rawsz)\n NUM_OBJECTS=74\n MIDX_BYTE_VERSION=4\n MIDX_BYTE_OID_VERSION=5\n@@ -238,9 +252,9 @@ MIDX_CHUNK_LOOKUP_WIDTH=12\n MIDX_OFFSET_PACKNAMES=$(($MIDX_HEADER_SIZE + \\\n \t\t\t $MIDX_NUM_CHUNKS * $MIDX_CHUNK_LOOKUP_WIDTH))\n MIDX_BYTE_PACKNAME_ORDER=$(($MIDX_OFFSET_PACKNAMES + 2))\n-MIDX_OFFSET_OID_FANOUT=$(($MIDX_OFFSET_PACKNAMES + 652))\n+MIDX_OFFSET_OID_FANOUT=$(($MIDX_OFFSET_PACKNAMES + $(test_oid packnameoff)))\n MIDX_OID_FANOUT_WIDTH=4\n-MIDX_BYTE_OID_FANOUT_ORDER=$((MIDX_OFFSET_OID_FANOUT + 250 * $MIDX_OID_FANOUT_WIDTH + 1))\n+MIDX_BYTE_OID_FANOUT_ORDER=$((MIDX_OFFSET_OID_FANOUT + 250 * $MIDX_OID_FANOUT_WIDTH + $(test_oid fanoutoff)))\n MIDX_OFFSET_OID_LOOKUP=$(($MIDX_OFFSET_OID_FANOUT + 256 * $MIDX_OID_FANOUT_WIDTH))\n MIDX_BYTE_OID_LOOKUP=$(($MIDX_OFFSET_OID_LOOKUP + 16 * $HASH_LEN))\n MIDX_OFFSET_OBJECT_OFFSETS=$(($MIDX_OFFSET_OID_LOOKUP + $NUM_OBJECTS * $HASH_LEN))\n@@ -387,7 +401,7 @@ test_expect_success 'force some 64-bit offsets with pack-objects' '\n \tpack64=$(git pack-objects --index-version=2,0x40 objects64/pack/test-64 <obj-list) &&\n \tidx64=objects64/pack/test-64-$pack64.idx &&\n \tchmod u+w $idx64 &&\n-\tcorrupt_data $idx64 2999 \"\\02\" &&\n+\tcorrupt_data $idx64 $(test_oid idxoff) \"\\02\" &&\n \tmidx64=$(git multi-pack-index --object-dir=objects64 write) &&\n \tmidx_read_expect 1 63 5 objects64 \" large-offsets\"\n '\n"},{"id":"388729","messageId":"20191221194936.1346664-14-sandals@crustytoothpaste.net","threadId":"52503","inReplyTo":"20191221194936.1346664-1-sandals@crustytoothpaste.net","subject":"[PATCH 13/20] t5510: make hash size independent","fromName":"brian m. carlson","fromEmail":"sandals@crustytoothpaste.net","sentAt":"2019-12-21T19:49:29Z","receivedAt":"2019-12-21T19:50:17Z","isPatch":true,"sender":{"key":"sandals@crustytoothpaste.net","avatar":"https://avatars.githubusercontent.com/u/497054?v=4"},"body":"Use $OID_REGEX instead of hard-coding 40-based regular expressions.\nChange invocations of cut with a hard-coded constant to split using a\ndelimiter instead.\n\nSigned-off-by: brian m. carlson <sandals@crustytoothpaste.net>\n---\n t/t5510-fetch.sh | 9 +++++----\n 1 file changed, 5 insertions(+), 4 deletions(-)\n\ndiff --git a/t/t5510-fetch.sh b/t/t5510-fetch.sh\nindex 4b60282689..2ceae14164 100755\n--- a/t/t5510-fetch.sh\n+++ b/t/t5510-fetch.sh\n@@ -11,7 +11,7 @@ D=$(pwd)\n \n test_bundle_object_count () {\n \tgit verify-pack -v \"$1\" >verify.out &&\n-\ttest \"$2\" = $(grep '^[0-9a-f]\\{40\\} ' verify.out | wc -l)\n+\ttest \"$2\" = $(grep \"^$OID_REGEX \" verify.out | wc -l)\n }\n \n convert_bundle_to_pack () {\n@@ -261,9 +261,10 @@ test_expect_success 'create bundle 1' '\n '\n \n test_expect_success 'header of bundle looks right' '\n+\thead -n 4 \"$D\"/bundle1 &&\n \thead -n 1 \"$D\"/bundle1 | grep \"^#\" &&\n-\thead -n 2 \"$D\"/bundle1 | grep \"^-[0-9a-f]\\{40\\} \" &&\n-\thead -n 3 \"$D\"/bundle1 | grep \"^[0-9a-f]\\{40\\} \" &&\n+\thead -n 2 \"$D\"/bundle1 | grep \"^-$OID_REGEX \" &&\n+\thead -n 3 \"$D\"/bundle1 | grep \"^$OID_REGEX \" &&\n \thead -n 4 \"$D\"/bundle1 | grep \"^$\"\n '\n \n@@ -289,7 +290,7 @@ test_expect_success 'bundle 1 has only 3 files ' '\n test_expect_success 'unbundle 2' '\n \tcd \"$D/bundle\" &&\n \tgit fetch ../bundle2 master:master &&\n-\ttest \"tip\" = \"$(git log -1 --pretty=oneline master | cut -b42-)\"\n+\ttest \"tip\" = \"$(git log -1 --pretty=oneline master | cut -d\" \" -f2)\"\n '\n \n test_expect_success 'bundle does not prerequisite objects' '\n"},{"id":"388730","messageId":"20191221194936.1346664-15-sandals@crustytoothpaste.net","threadId":"52503","inReplyTo":"20191221194936.1346664-1-sandals@crustytoothpaste.net","subject":"[PATCH 14/20] t5512: abstract away SHA-1-specific constants","fromName":"brian m. carlson","fromEmail":"sandals@crustytoothpaste.net","sentAt":"2019-12-21T19:49:30Z","receivedAt":"2019-12-21T19:50:18Z","isPatch":true,"sender":{"key":"sandals@crustytoothpaste.net","avatar":"https://avatars.githubusercontent.com/u/497054?v=4"},"body":"Adjust the test so that it computes variables for object IDs instead of\nusing hard-coded hashes.\n\nSigned-off-by: brian m. carlson <sandals@crustytoothpaste.net>\n---\n t/t5512-ls-remote.sh | 17 +++++++++--------\n 1 file changed, 9 insertions(+), 8 deletions(-)\n\ndiff --git a/t/t5512-ls-remote.sh b/t/t5512-ls-remote.sh\nindex d7b9f9078f..62152bad1d 100755\n--- a/t/t5512-ls-remote.sh\n+++ b/t/t5512-ls-remote.sh\n@@ -230,9 +230,10 @@ test_expect_success 'ls-remote --symref' '\n '\n \n test_expect_success 'ls-remote with filtered symref (refname)' '\n-\tcat >expect <<-\\EOF &&\n+\trev=$(git rev-parse HEAD) &&\n+\tcat >expect <<-EOF &&\n \tref: refs/heads/master\tHEAD\n-\t1bd44cb9d13204b0fe1958db0082f5028a16eb3a\tHEAD\n+\t$rev\tHEAD\n \tEOF\n \t# Protocol v2 supports sending symrefs for refs other than HEAD, so use\n \t# protocol v0 here.\n@@ -242,10 +243,10 @@ test_expect_success 'ls-remote with filtered symref (refname)' '\n \n test_expect_failure 'ls-remote with filtered symref (--heads)' '\n \tgit symbolic-ref refs/heads/foo refs/tags/mark &&\n-\tcat >expect <<-\\EOF &&\n+\tcat >expect <<-EOF &&\n \tref: refs/tags/mark\trefs/heads/foo\n-\t1bd44cb9d13204b0fe1958db0082f5028a16eb3a\trefs/heads/foo\n-\t1bd44cb9d13204b0fe1958db0082f5028a16eb3a\trefs/heads/master\n+\t$rev\trefs/heads/foo\n+\t$rev\trefs/heads/master\n \tEOF\n \t# Protocol v2 supports sending symrefs for refs other than HEAD, so use\n \t# protocol v0 here.\n@@ -254,9 +255,9 @@ test_expect_failure 'ls-remote with filtered symref (--heads)' '\n '\n \n test_expect_success 'ls-remote --symref omits filtered-out matches' '\n-\tcat >expect <<-\\EOF &&\n-\t1bd44cb9d13204b0fe1958db0082f5028a16eb3a\trefs/heads/foo\n-\t1bd44cb9d13204b0fe1958db0082f5028a16eb3a\trefs/heads/master\n+\tcat >expect <<-EOF &&\n+\t$rev\trefs/heads/foo\n+\t$rev\trefs/heads/master\n \tEOF\n \t# Protocol v2 supports sending symrefs for refs other than HEAD, so use\n \t# protocol v0 here.\n"},{"id":"388731","messageId":"20191221194936.1346664-18-sandals@crustytoothpaste.net","threadId":"52503","inReplyTo":"20191221194936.1346664-1-sandals@crustytoothpaste.net","subject":"[PATCH 17/20] t5540: make hash size independent","fromName":"brian m. carlson","fromEmail":"sandals@crustytoothpaste.net","sentAt":"2019-12-21T19:49:33Z","receivedAt":"2019-12-21T19:50:20Z","isPatch":true,"sender":{"key":"sandals@crustytoothpaste.net","avatar":"https://avatars.githubusercontent.com/u/497054?v=4"},"body":"Use regex values based on $OID_REGEX instead of hard-coding them based\non expected object ID lengths.\n\nSigned-off-by: brian m. carlson <sandals@crustytoothpaste.net>\n---\n t/t5540-http-push-webdav.sh | 6 ++----\n 1 file changed, 2 insertions(+), 4 deletions(-)\n\ndiff --git a/t/t5540-http-push-webdav.sh b/t/t5540-http-push-webdav.sh\nindex a094fd5e71..d476c33509 100755\n--- a/t/t5540-http-push-webdav.sh\n+++ b/t/t5540-http-push-webdav.sh\n@@ -134,15 +134,13 @@ test_expect_success 'MKCOL sends directory names with trailing slashes' '\n \n x1=\"[0-9a-f]\"\n x2=\"$x1$x1\"\n-x5=\"$x1$x1$x1$x1$x1\"\n-x38=\"$x5$x5$x5$x5$x5$x5$x5$x1$x1$x1\"\n-x40=\"$x38$x2\"\n+xtrunc=$(echo $OID_REGEX | sed -e \"s/\\[0-9a-f\\]\\[0-9a-f\\]//\")\n \n test_expect_success 'PUT and MOVE sends object to URLs with SHA-1 hash suffix' '\n \tsed \\\n \t\t-e \"s/PUT /OP /\" \\\n \t\t-e \"s/MOVE /OP /\" \\\n-\t    -e \"s|/objects/$x2/${x38}_$x40|WANTED_PATH_REQUEST|\" \\\n+\t    -e \"s|/objects/$x2/${xtrunc}_$OID_REGEX|WANTED_PATH_REQUEST|\" \\\n \t\t\"$HTTPD_ROOT_PATH\"/access.log |\n \tgrep -e \"\\\"OP .*WANTED_PATH_REQUEST HTTP/[.0-9]*\\\" 20[0-9] \"\n \n"},{"id":"388732","messageId":"20191221194936.1346664-13-sandals@crustytoothpaste.net","threadId":"52503","inReplyTo":"20191221194936.1346664-1-sandals@crustytoothpaste.net","subject":"[PATCH 12/20] t5504: make hash algorithm independent","fromName":"brian m. carlson","fromEmail":"sandals@crustytoothpaste.net","sentAt":"2019-12-21T19:49:28Z","receivedAt":"2019-12-21T19:50:21Z","isPatch":true,"sender":{"key":"sandals@crustytoothpaste.net","avatar":"https://avatars.githubusercontent.com/u/497054?v=4"},"body":"Instead of hard-coding invalid object IDs in this test, use test_oid to\nlook up ones of the appropriate length.\n\nSigned-off-by: brian m. carlson <sandals@crustytoothpaste.net>\n---\n t/t5504-fetch-receive-strict.sh | 17 +++++++++--------\n 1 file changed, 9 insertions(+), 8 deletions(-)\n\ndiff --git a/t/t5504-fetch-receive-strict.sh b/t/t5504-fetch-receive-strict.sh\nindex fdfe179b11..645b4c78d3 100755\n--- a/t/t5504-fetch-receive-strict.sh\n+++ b/t/t5504-fetch-receive-strict.sh\n@@ -4,6 +4,7 @@ test_description='fetch/receive strict mode'\n . ./test-lib.sh\n \n test_expect_success 'setup and inject \"corrupt or missing\" object' '\n+\ttest_oid_init &&\n \techo hello >greetings &&\n \tgit add greetings &&\n \tgit commit -m greetings &&\n@@ -144,11 +145,11 @@ test_expect_success 'fsck with no skipList input' '\n \n test_expect_success 'setup sorted and unsorted skipLists' '\n \tcat >SKIP.unsorted <<-EOF &&\n-\t0000000000000000000000000000000000000004\n-\t0000000000000000000000000000000000000002\n+\t$(test_oid 004)\n+\t$(test_oid 002)\n \t$commit\n-\t0000000000000000000000000000000000000001\n-\t0000000000000000000000000000000000000003\n+\t$(test_oid 001)\n+\t$(test_oid 003)\n \tEOF\n \tsort SKIP.unsorted >SKIP.sorted\n '\n@@ -172,14 +173,14 @@ test_expect_success 'fsck with invalid or bogus skipList input' '\n test_expect_success 'fsck with other accepted skipList input (comments & empty lines)' '\n \tcat >SKIP.with-comment <<-EOF &&\n \t# Some bad commit\n-\t0000000000000000000000000000000000000001\n+\t$(test_oid 001)\n \tEOF\n \ttest_must_fail git -c fsck.skipList=SKIP.with-comment fsck 2>err-with-comment &&\n \ttest_i18ngrep \"missingEmail\" err-with-comment &&\n \tcat >SKIP.with-empty-line <<-EOF &&\n-\t0000000000000000000000000000000000000001\n+\t$(test_oid 001)\n \n-\t0000000000000000000000000000000000000002\n+\t$(test_oid 002)\n \tEOF\n \ttest_must_fail git -c fsck.skipList=SKIP.with-empty-line fsck 2>err-with-empty-line &&\n \ttest_i18ngrep \"missingEmail\" err-with-empty-line\n@@ -204,7 +205,7 @@ test_expect_success 'fsck with exhaustive accepted skipList input (various types\n \techo \" # Comment after whitespace\" >>SKIP.exhaustive &&\n \techo \"$commit # Our bad commit (with leading whitespace and trailing comment)\" >>SKIP.exhaustive &&\n \techo \"# Some bad commit (leading whitespace)\" >>SKIP.exhaustive &&\n-\techo \"  0000000000000000000000000000000000000001\" >>SKIP.exhaustive &&\n+\techo \"  $(test_oid 001)\" >>SKIP.exhaustive &&\n \tgit -c fsck.skipList=SKIP.exhaustive fsck 2>err &&\n \ttest_must_be_empty err\n '\n"},{"id":"388733","messageId":"20191221194936.1346664-16-sandals@crustytoothpaste.net","threadId":"52503","inReplyTo":"20191221194936.1346664-1-sandals@crustytoothpaste.net","subject":"[PATCH 15/20] t5530: compute results based on object length","fromName":"brian m. carlson","fromEmail":"sandals@crustytoothpaste.net","sentAt":"2019-12-21T19:49:31Z","receivedAt":"2019-12-21T19:50:22Z","isPatch":true,"sender":{"key":"sandals@crustytoothpaste.net","avatar":"https://avatars.githubusercontent.com/u/497054?v=4"},"body":"Compute the various pkt-line values based on the length of the object\nIDs in use.\n\nSigned-off-by: brian m. carlson <sandals@crustytoothpaste.net>\n---\n t/t5530-upload-pack-error.sh | 26 ++++++++++++++------------\n 1 file changed, 14 insertions(+), 12 deletions(-)\n\ndiff --git a/t/t5530-upload-pack-error.sh b/t/t5530-upload-pack-error.sh\nindex a1d3031d40..4ce9a9f704 100755\n--- a/t/t5530-upload-pack-error.sh\n+++ b/t/t5530-upload-pack-error.sh\n@@ -14,7 +14,7 @@ corrupt_repo () {\n }\n \n test_expect_success 'setup and corrupt repository' '\n-\n+\ttest_oid_init &&\n \techo file >file &&\n \tgit add file &&\n \tgit rev-parse :file &&\n@@ -31,9 +31,10 @@ test_expect_success 'fsck fails' '\n '\n \n test_expect_success 'upload-pack fails due to error in pack-objects packing' '\n-\n-\tprintf \"0032want %s\\n00000009done\\n0000\" \\\n-\t\t$(git rev-parse HEAD) >input &&\n+\thead=$(git rev-parse HEAD) &&\n+\thexsz=$(test_oid hexsz) &&\n+\tprintf \"%04xwant %s\\n00000009done\\n0000\" \\\n+\t\t$(($hexsz + 10)) $head >input &&\n \ttest_must_fail git upload-pack . <input >/dev/null 2>output.err &&\n \ttest_i18ngrep \"unable to read\" output.err &&\n \ttest_i18ngrep \"pack-objects died\" output.err\n@@ -51,16 +52,17 @@ test_expect_success 'fsck fails' '\n '\n test_expect_success 'upload-pack fails due to error in rev-list' '\n \n-\tprintf \"0032want %s\\n0034shallow %s00000009done\\n0000\" \\\n-\t\t$(git rev-parse HEAD) $(git rev-parse HEAD^) >input &&\n+\tprintf \"%04xwant %s\\n%04xshallow %s00000009done\\n0000\" \\\n+\t\t$(($hexsz + 10)) $(git rev-parse HEAD) \\\n+\t\t$(($hexsz + 12)) $(git rev-parse HEAD^) >input &&\n \ttest_must_fail git upload-pack . <input >/dev/null 2>output.err &&\n \tgrep \"bad tree object\" output.err\n '\n \n test_expect_success 'upload-pack fails due to bad want (no object)' '\n \n-\tprintf \"0045want %s multi_ack_detailed\\n00000009done\\n0000\" \\\n-\t\t\"deadbeefdeadbeefdeadbeefdeadbeefdeadbeef\" >input &&\n+\tprintf \"%04xwant %s multi_ack_detailed\\n00000009done\\n0000\" \\\n+\t\t$(($hexsz + 29)) $(test_oid deadbeef) >input &&\n \ttest_must_fail git upload-pack . <input >output 2>output.err &&\n \tgrep \"not our ref\" output.err &&\n \tgrep \"ERR\" output &&\n@@ -70,8 +72,8 @@ test_expect_success 'upload-pack fails due to bad want (no object)' '\n test_expect_success 'upload-pack fails due to bad want (not tip)' '\n \n \toid=$(echo an object we have | git hash-object -w --stdin) &&\n-\tprintf \"0045want %s multi_ack_detailed\\n00000009done\\n0000\" \\\n-\t\t\"$oid\" >input &&\n+\tprintf \"%04xwant %s multi_ack_detailed\\n00000009done\\n0000\" \\\n+\t\t$(($hexsz + 29)) \"$oid\" >input &&\n \ttest_must_fail git upload-pack . <input >output 2>output.err &&\n \tgrep \"not our ref\" output.err &&\n \tgrep \"ERR\" output &&\n@@ -80,8 +82,8 @@ test_expect_success 'upload-pack fails due to bad want (not tip)' '\n \n test_expect_success 'upload-pack fails due to error in pack-objects enumeration' '\n \n-\tprintf \"0032want %s\\n00000009done\\n0000\" \\\n-\t\t$(git rev-parse HEAD) >input &&\n+\tprintf \"%04xwant %s\\n00000009done\\n0000\" \\\n+\t\t$((hexsz + 10)) $(git rev-parse HEAD) >input &&\n \ttest_must_fail git upload-pack . <input >/dev/null 2>output.err &&\n \tgrep \"bad tree object\" output.err &&\n \tgrep \"pack-objects died\" output.err\n"},{"id":"388734","messageId":"20191221194936.1346664-20-sandals@crustytoothpaste.net","threadId":"52503","inReplyTo":"20191221194936.1346664-1-sandals@crustytoothpaste.net","subject":"[PATCH 19/20] t5601: switch into repository to hash object","fromName":"brian m. carlson","fromEmail":"sandals@crustytoothpaste.net","sentAt":"2019-12-21T19:49:35Z","receivedAt":"2019-12-21T19:50:23Z","isPatch":true,"sender":{"key":"sandals@crustytoothpaste.net","avatar":"https://avatars.githubusercontent.com/u/497054?v=4"},"body":"This test performs a clone from outside any repository. Consequently,\nthe hash algorithm used defaults to SHA-1. When the test is running with\nSHA-256, this results in an object ID that is not usable by the rest of\nthe test. In order to ensure that we provide a usable value, switch into\nthe source repository before hashing.\n\nSigned-off-by: brian m. carlson <sandals@crustytoothpaste.net>\n---\n t/t5601-clone.sh | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/t/t5601-clone.sh b/t/t5601-clone.sh\nindex ad8c41176e..84ea2a3eb7 100755\n--- a/t/t5601-clone.sh\n+++ b/t/t5601-clone.sh\n@@ -635,10 +635,10 @@ partial_clone_server () {\n \trm -rf \"$SERVER\" client &&\n \ttest_create_repo \"$SERVER\" &&\n \ttest_commit -C \"$SERVER\" one &&\n-\tHASH1=$(git hash-object \"$SERVER/one.t\") &&\n+\tHASH1=$(git -C \"$SERVER\" hash-object one.t) &&\n \tgit -C \"$SERVER\" revert HEAD &&\n \ttest_commit -C \"$SERVER\" two &&\n-\tHASH2=$(git hash-object \"$SERVER/two.t\") &&\n+\tHASH2=$(git -C \"$SERVER\" hash-object two.t) &&\n \ttest_config -C \"$SERVER\" uploadpack.allowfilter 1 &&\n \ttest_config -C \"$SERVER\" uploadpack.allowanysha1inwant 1\n }\n"},{"id":"388735","messageId":"20191221194936.1346664-19-sandals@crustytoothpaste.net","threadId":"52503","inReplyTo":"20191221194936.1346664-1-sandals@crustytoothpaste.net","subject":"[PATCH 18/20] t5562: use $ZERO_OID","fromName":"brian m. carlson","fromEmail":"sandals@crustytoothpaste.net","sentAt":"2019-12-21T19:49:34Z","receivedAt":"2019-12-21T19:50:24Z","isPatch":true,"sender":{"key":"sandals@crustytoothpaste.net","avatar":"https://avatars.githubusercontent.com/u/497054?v=4"},"body":"This test uses $_z40 to express an all-zeros object ID, which doesn't\nwork for SHA-256.  Use $ZERO_OID instead, which is the right size for\nall hash values.\n\nSigned-off-by: brian m. carlson <sandals@crustytoothpaste.net>\n---\n t/t5562-http-backend-content-length.sh | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/t/t5562-http-backend-content-length.sh b/t/t5562-http-backend-content-length.sh\nindex f0f425b2cf..4a110b307e 100755\n--- a/t/t5562-http-backend-content-length.sh\n+++ b/t/t5562-http-backend-content-length.sh\n@@ -59,7 +59,7 @@ test_expect_success 'setup' '\n \tprintf done | packetize >>fetch_body &&\n \ttest_copy_bytes 10 <fetch_body >fetch_body.trunc &&\n \thash_next=$(git commit-tree -p HEAD -m next HEAD^{tree}) &&\n-\tprintf \"%s %s refs/heads/newbranch\\\\0report-status\\\\n\" \"$_z40\" \"$hash_next\" | packetize >push_body &&\n+\tprintf \"%s %s refs/heads/newbranch\\\\0report-status\\\\n\" \"$ZERO_OID\" \"$hash_next\" | packetize >push_body &&\n \tprintf 0000 >>push_body &&\n \techo \"$hash_next\" | git pack-objects --stdout >>push_body &&\n \ttest_copy_bytes 10 <push_body >push_body.trunc &&\n"},{"id":"388736","messageId":"20191221194936.1346664-21-sandals@crustytoothpaste.net","threadId":"52503","inReplyTo":"20191221194936.1346664-1-sandals@crustytoothpaste.net","subject":"[PATCH 20/20] t5604: make hash independent","fromName":"brian m. carlson","fromEmail":"sandals@crustytoothpaste.net","sentAt":"2019-12-21T19:49:36Z","receivedAt":"2019-12-21T19:50:25Z","isPatch":true,"sender":{"key":"sandals@crustytoothpaste.net","avatar":"https://avatars.githubusercontent.com/u/497054?v=4"},"body":"To make our values hash independent, we turn the directory of the object\ninto \"Y\" and the file name into \"Z\" after having sorted items by their\nname. However, when using SHA-256, one of our file names begins with an\n\"a\" character, which means it sorts into the wrong place in the list,\ncausing the test to fail.\n\nSince we don't care about the order of these items, just sort them after\nstripping actual hash contents, which means they'll work with any hash\nalgorithm.\n\nSigned-off-by: brian m. carlson <sandals@crustytoothpaste.net>\n---\n t/t5604-clone-reference.sh | 5 +++--\n 1 file changed, 3 insertions(+), 2 deletions(-)\n\ndiff --git a/t/t5604-clone-reference.sh b/t/t5604-clone-reference.sh\nindex 4894237ab8..0c74b4e21a 100755\n--- a/t/t5604-clone-reference.sh\n+++ b/t/t5604-clone-reference.sh\n@@ -326,15 +326,16 @@ test_expect_success SYMLINKS 'clone repo with symlinked or unknown files at obje\n \tfor raw in $(ls T*.raw)\n \tdo\n \t\tsed -e \"s!/../!/Y/!; s![0-9a-f]\\{38,\\}!Z!\" -e \"/commit-graph/d\" \\\n-\t\t    -e \"/multi-pack-index/d\" <$raw >$raw.de-sha || return 1\n+\t\t    -e \"/multi-pack-index/d\" <$raw >$raw.de-sha-1 &&\n+\t\tsort $raw.de-sha-1 >$raw.de-sha || return 1\n \tdone &&\n \n \tcat >expected-files <<-EOF &&\n \t./Y/Z\n \t./Y/Z\n+\t./Y/Z\n \t./a-loose-dir/Z\n \t./an-object\n-\t./Y/Z\n \t./info/packs\n \t./pack/pack-Z.idx\n \t./pack/pack-Z.pack\n"},{"id":"388737","messageId":"20191221194936.1346664-17-sandals@crustytoothpaste.net","threadId":"52503","inReplyTo":"20191221194936.1346664-1-sandals@crustytoothpaste.net","subject":"[PATCH 16/20] t5537: make hash size independent","fromName":"brian m. carlson","fromEmail":"sandals@crustytoothpaste.net","sentAt":"2019-12-21T19:49:32Z","receivedAt":"2019-12-21T19:50:29Z","isPatch":true,"sender":{"key":"sandals@crustytoothpaste.net","avatar":"https://avatars.githubusercontent.com/u/497054?v=4"},"body":"This test modifies a pkt-line stream with sed to change a line with\n\"shallow\" to \"unshallow\".  However, this modification is dependent on\nthe size of the hash in use; with SHA-256, the pkt-line length is\ndifferent, leading to the sed command having no effect.\n\nUse test_oid_cache to specify the correct values for each hash so that\nthe test continues to work.\n\nSigned-off-by: brian m. carlson <sandals@crustytoothpaste.net>\n---\n t/t5537-fetch-shallow.sh | 8 ++++++--\n 1 file changed, 6 insertions(+), 2 deletions(-)\n\ndiff --git a/t/t5537-fetch-shallow.sh b/t/t5537-fetch-shallow.sh\nindex 97a67728ca..9e16512fe3 100755\n--- a/t/t5537-fetch-shallow.sh\n+++ b/t/t5537-fetch-shallow.sh\n@@ -15,7 +15,11 @@ test_expect_success 'setup' '\n \tcommit 2 &&\n \tcommit 3 &&\n \tcommit 4 &&\n-\tgit config --global transfer.fsckObjects true\n+\tgit config --global transfer.fsckObjects true &&\n+\ttest_oid_cache <<-EOF\n+\tsed sha1:s/0034shallow %s/0036unshallow %s/\n+\tsed sha256:s/004cshallow %s/004eunshallow %s/\n+\tEOF\n '\n \n test_expect_success 'setup shallow clone' '\n@@ -239,7 +243,7 @@ test_expect_success 'shallow fetches check connectivity before writing shallow f\n \t# with an empty packfile. This is done by refetching with a shorter\n \t# depth (to ensure that the packfile is empty), and overwriting the\n \t# shallow line in the response with the unshallow line we want.\n-\tprintf \"s/0034shallow %s/0036unshallow %s/\" \\\n+\tprintf \"$(test_oid sed)\" \\\n \t       \"$(git -C \"$REPO\" rev-parse HEAD)\" \\\n \t       \"$(git -C \"$REPO\" rev-parse HEAD^)\" \\\n \t       >\"$HTTPD_ROOT_PATH/one-time-sed\" &&\n"},{"id":"388738","messageId":"20191221194936.1346664-6-sandals@crustytoothpaste.net","threadId":"52503","inReplyTo":"20191221194936.1346664-1-sandals@crustytoothpaste.net","subject":"[PATCH 05/20] t4202: abstract away SHA-1-specific constants","fromName":"brian m. carlson","fromEmail":"sandals@crustytoothpaste.net","sentAt":"2019-12-21T19:49:21Z","receivedAt":"2019-12-21T19:50:31Z","isPatch":true,"sender":{"key":"sandals@crustytoothpaste.net","avatar":"https://avatars.githubusercontent.com/u/497054?v=4"},"body":"Adjust the test so that it computes values for object IDs instead of\nusing hard-coded hashes.  Additionally, update the sanitize_output\nfunction to sanitize the index lines in diff output, since it's clear\nfrom the assertions in question that we are not interested in the\nspecific object IDs.\n\nSigned-off-by: brian m. carlson <sandals@crustytoothpaste.net>\n---\n t/t4202-log.sh | 127 +++++++++++++++++++++++++------------------------\n 1 file changed, 65 insertions(+), 62 deletions(-)\n\ndiff --git a/t/t4202-log.sh b/t/t4202-log.sh\nindex 2c9489484a..192347a3e1 100755\n--- a/t/t4202-log.sh\n+++ b/t/t4202-log.sh\n@@ -87,12 +87,12 @@ test_expect_success 'format %w(,1,2)' '\n '\n \n cat > expect << EOF\n-804a787 sixth\n-394ef78 fifth\n-5d31159 fourth\n-2fbe8c0 third\n-f7dab8e second\n-3a2fdcb initial\n+$(git rev-parse --short :/sixth  ) sixth\n+$(git rev-parse --short :/fifth  ) fifth\n+$(git rev-parse --short :/fourth ) fourth\n+$(git rev-parse --short :/third  ) third\n+$(git rev-parse --short :/second ) second\n+$(git rev-parse --short :/initial) initial\n EOF\n test_expect_success 'oneline' '\n \n@@ -173,43 +173,45 @@ test_expect_success 'git config log.follow is overridden by --no-follow' '\n \tverbose test \"$actual\" = \"$expect\"\n '\n \n+# Note that these commits are intentionally listed out of order.\n+last_three=\"$(git rev-parse :/fourth :/sixth :/fifth)\"\n cat > expect << EOF\n-804a787 sixth\n-394ef78 fifth\n-5d31159 fourth\n+$(git rev-parse --short :/sixth ) sixth\n+$(git rev-parse --short :/fifth ) fifth\n+$(git rev-parse --short :/fourth) fourth\n EOF\n test_expect_success 'git log --no-walk <commits> sorts by commit time' '\n-\tgit log --no-walk --oneline 5d31159 804a787 394ef78 > actual &&\n+\tgit log --no-walk --oneline $last_three > actual &&\n \ttest_cmp expect actual\n '\n \n test_expect_success 'git log --no-walk=sorted <commits> sorts by commit time' '\n-\tgit log --no-walk=sorted --oneline 5d31159 804a787 394ef78 > actual &&\n+\tgit log --no-walk=sorted --oneline $last_three > actual &&\n \ttest_cmp expect actual\n '\n \n cat > expect << EOF\n-=== 804a787 sixth\n-=== 394ef78 fifth\n-=== 5d31159 fourth\n+=== $(git rev-parse --short :/sixth ) sixth\n+=== $(git rev-parse --short :/fifth ) fifth\n+=== $(git rev-parse --short :/fourth) fourth\n EOF\n test_expect_success 'git log --line-prefix=\"=== \" --no-walk <commits> sorts by commit time' '\n-\tgit log --line-prefix=\"=== \" --no-walk --oneline 5d31159 804a787 394ef78 > actual &&\n+\tgit log --line-prefix=\"=== \" --no-walk --oneline $last_three > actual &&\n \ttest_cmp expect actual\n '\n \n cat > expect << EOF\n-5d31159 fourth\n-804a787 sixth\n-394ef78 fifth\n+$(git rev-parse --short :/fourth) fourth\n+$(git rev-parse --short :/sixth ) sixth\n+$(git rev-parse --short :/fifth ) fifth\n EOF\n test_expect_success 'git log --no-walk=unsorted <commits> leaves list of commits as given' '\n-\tgit log --no-walk=unsorted --oneline 5d31159 804a787 394ef78 > actual &&\n+\tgit log --no-walk=unsorted --oneline $last_three > actual &&\n \ttest_cmp expect actual\n '\n \n test_expect_success 'git show <commits> leaves list of commits as given' '\n-\tgit show --oneline -s 5d31159 804a787 394ef78 > actual &&\n+\tgit show --oneline -s $last_three > actual &&\n \ttest_cmp expect actual\n '\n \n@@ -957,7 +959,7 @@ cat >expect <<\\EOF\n | |\n | | diff --git a/reach.t b/reach.t\n | | new file mode 100644\n-| | index 0000000..10c9591\n+| | index BEFORE..AFTER\n | | --- /dev/null\n | | +++ b/reach.t\n | | @@ -0,0 +1 @@\n@@ -980,7 +982,7 @@ cat >expect <<\\EOF\n | | |\n | | |   diff --git a/octopus-b.t b/octopus-b.t\n | | |   new file mode 100644\n-| | |   index 0000000..d5fcad0\n+| | |   index BEFORE..AFTER\n | | |   --- /dev/null\n | | |   +++ b/octopus-b.t\n | | |   @@ -0,0 +1 @@\n@@ -996,7 +998,7 @@ cat >expect <<\\EOF\n | |\n | |   diff --git a/octopus-a.t b/octopus-a.t\n | |   new file mode 100644\n-| |   index 0000000..11ee015\n+| |   index BEFORE..AFTER\n | |   --- /dev/null\n | |   +++ b/octopus-a.t\n | |   @@ -0,0 +1 @@\n@@ -1012,7 +1014,7 @@ cat >expect <<\\EOF\n |\n |   diff --git a/seventh.t b/seventh.t\n |   new file mode 100644\n-|   index 0000000..9744ffc\n+|   index BEFORE..AFTER\n |   --- /dev/null\n |   +++ b/seventh.t\n |   @@ -0,0 +1 @@\n@@ -1046,7 +1048,7 @@ cat >expect <<\\EOF\n | | | |\n | | | | diff --git a/tangle-a b/tangle-a\n | | | | new file mode 100644\n-| | | | index 0000000..7898192\n+| | | | index BEFORE..AFTER\n | | | | --- /dev/null\n | | | | +++ b/tangle-a\n | | | | @@ -0,0 +1 @@\n@@ -1068,7 +1070,7 @@ cat >expect <<\\EOF\n | | | |\n | | | |   diff --git a/2 b/2\n | | | |   new file mode 100644\n-| | | |   index 0000000..0cfbf08\n+| | | |   index BEFORE..AFTER\n | | | |   --- /dev/null\n | | | |   +++ b/2\n | | | |   @@ -0,0 +1 @@\n@@ -1084,7 +1086,7 @@ cat >expect <<\\EOF\n | | | |\n | | | | diff --git a/1 b/1\n | | | | new file mode 100644\n-| | | | index 0000000..d00491f\n+| | | | index BEFORE..AFTER\n | | | | --- /dev/null\n | | | | +++ b/1\n | | | | @@ -0,0 +1 @@\n@@ -1100,7 +1102,7 @@ cat >expect <<\\EOF\n | | | |\n | | | | diff --git a/one b/one\n | | | | new file mode 100644\n-| | | | index 0000000..9a33383\n+| | | | index BEFORE..AFTER\n | | | | --- /dev/null\n | | | | +++ b/one\n | | | | @@ -0,0 +1 @@\n@@ -1116,7 +1118,7 @@ cat >expect <<\\EOF\n | | |\n | | |   diff --git a/a/two b/a/two\n | | |   deleted file mode 100644\n-| | |   index 9245af5..0000000\n+| | |   index BEFORE..AFTER\n | | |   --- a/a/two\n | | |   +++ /dev/null\n | | |   @@ -1 +0,0 @@\n@@ -1132,7 +1134,7 @@ cat >expect <<\\EOF\n | | |\n | | | diff --git a/a/two b/a/two\n | | | new file mode 100644\n-| | | index 0000000..9245af5\n+| | | index BEFORE..AFTER\n | | | --- /dev/null\n | | | +++ b/a/two\n | | | @@ -0,0 +1 @@\n@@ -1148,7 +1150,7 @@ cat >expect <<\\EOF\n | |\n | |   diff --git a/ein b/ein\n | |   new file mode 100644\n-| |   index 0000000..9d7e69f\n+| |   index BEFORE..AFTER\n | |   --- /dev/null\n | |   +++ b/ein\n | |   @@ -0,0 +1 @@\n@@ -1165,14 +1167,14 @@ cat >expect <<\\EOF\n |\n |   diff --git a/ichi b/ichi\n |   new file mode 100644\n-|   index 0000000..9d7e69f\n+|   index BEFORE..AFTER\n |   --- /dev/null\n |   +++ b/ichi\n |   @@ -0,0 +1 @@\n |   +ichi\n |   diff --git a/one b/one\n |   deleted file mode 100644\n-|   index 9d7e69f..0000000\n+|   index BEFORE..AFTER\n |   --- a/one\n |   +++ /dev/null\n |   @@ -1 +0,0 @@\n@@ -1187,7 +1189,7 @@ cat >expect <<\\EOF\n |  1 file changed, 1 insertion(+), 1 deletion(-)\n |\n | diff --git a/one b/one\n-| index 5626abf..9d7e69f 100644\n+| index BEFORE..AFTER 100644\n | --- a/one\n | +++ b/one\n | @@ -1 +1 @@\n@@ -1204,7 +1206,7 @@ cat >expect <<\\EOF\n \n   diff --git a/one b/one\n   new file mode 100644\n-  index 0000000..5626abf\n+  index BEFORE..AFTER\n   --- /dev/null\n   +++ b/one\n   @@ -0,0 +1 @@\n@@ -1221,7 +1223,8 @@ sanitize_output () {\n \t    -e 's/, 0 insertions(+)//' \\\n \t    -e 's/ 1 files changed, / 1 file changed, /' \\\n \t    -e 's/, 1 deletions(-)/, 1 deletion(-)/' \\\n-\t    -e 's/, 1 insertions(+)/, 1 insertion(+)/'\n+\t    -e 's/, 1 insertions(+)/, 1 insertion(+)/' \\\n+\t    -e 's/index [0-9a-f]*\\.\\.[0-9a-f]*/index BEFORE..AFTER/'\n }\n \n test_expect_success 'log --graph with diff and stats' '\n@@ -1247,7 +1250,7 @@ cat >expect <<\\EOF\n *** | |\n *** | | diff --git a/reach.t b/reach.t\n *** | | new file mode 100644\n-*** | | index 0000000..10c9591\n+*** | | index BEFORE..AFTER\n *** | | --- /dev/null\n *** | | +++ b/reach.t\n *** | | @@ -0,0 +1 @@\n@@ -1270,7 +1273,7 @@ cat >expect <<\\EOF\n *** | | |\n *** | | |   diff --git a/octopus-b.t b/octopus-b.t\n *** | | |   new file mode 100644\n-*** | | |   index 0000000..d5fcad0\n+*** | | |   index BEFORE..AFTER\n *** | | |   --- /dev/null\n *** | | |   +++ b/octopus-b.t\n *** | | |   @@ -0,0 +1 @@\n@@ -1286,7 +1289,7 @@ cat >expect <<\\EOF\n *** | |\n *** | |   diff --git a/octopus-a.t b/octopus-a.t\n *** | |   new file mode 100644\n-*** | |   index 0000000..11ee015\n+*** | |   index BEFORE..AFTER\n *** | |   --- /dev/null\n *** | |   +++ b/octopus-a.t\n *** | |   @@ -0,0 +1 @@\n@@ -1302,7 +1305,7 @@ cat >expect <<\\EOF\n *** |\n *** |   diff --git a/seventh.t b/seventh.t\n *** |   new file mode 100644\n-*** |   index 0000000..9744ffc\n+*** |   index BEFORE..AFTER\n *** |   --- /dev/null\n *** |   +++ b/seventh.t\n *** |   @@ -0,0 +1 @@\n@@ -1336,7 +1339,7 @@ cat >expect <<\\EOF\n *** | | | |\n *** | | | | diff --git a/tangle-a b/tangle-a\n *** | | | | new file mode 100644\n-*** | | | | index 0000000..7898192\n+*** | | | | index BEFORE..AFTER\n *** | | | | --- /dev/null\n *** | | | | +++ b/tangle-a\n *** | | | | @@ -0,0 +1 @@\n@@ -1358,7 +1361,7 @@ cat >expect <<\\EOF\n *** | | | |\n *** | | | |   diff --git a/2 b/2\n *** | | | |   new file mode 100644\n-*** | | | |   index 0000000..0cfbf08\n+*** | | | |   index BEFORE..AFTER\n *** | | | |   --- /dev/null\n *** | | | |   +++ b/2\n *** | | | |   @@ -0,0 +1 @@\n@@ -1374,7 +1377,7 @@ cat >expect <<\\EOF\n *** | | | |\n *** | | | | diff --git a/1 b/1\n *** | | | | new file mode 100644\n-*** | | | | index 0000000..d00491f\n+*** | | | | index BEFORE..AFTER\n *** | | | | --- /dev/null\n *** | | | | +++ b/1\n *** | | | | @@ -0,0 +1 @@\n@@ -1390,7 +1393,7 @@ cat >expect <<\\EOF\n *** | | | |\n *** | | | | diff --git a/one b/one\n *** | | | | new file mode 100644\n-*** | | | | index 0000000..9a33383\n+*** | | | | index BEFORE..AFTER\n *** | | | | --- /dev/null\n *** | | | | +++ b/one\n *** | | | | @@ -0,0 +1 @@\n@@ -1406,7 +1409,7 @@ cat >expect <<\\EOF\n *** | | |\n *** | | |   diff --git a/a/two b/a/two\n *** | | |   deleted file mode 100644\n-*** | | |   index 9245af5..0000000\n+*** | | |   index BEFORE..AFTER\n *** | | |   --- a/a/two\n *** | | |   +++ /dev/null\n *** | | |   @@ -1 +0,0 @@\n@@ -1422,7 +1425,7 @@ cat >expect <<\\EOF\n *** | | |\n *** | | | diff --git a/a/two b/a/two\n *** | | | new file mode 100644\n-*** | | | index 0000000..9245af5\n+*** | | | index BEFORE..AFTER\n *** | | | --- /dev/null\n *** | | | +++ b/a/two\n *** | | | @@ -0,0 +1 @@\n@@ -1438,7 +1441,7 @@ cat >expect <<\\EOF\n *** | |\n *** | |   diff --git a/ein b/ein\n *** | |   new file mode 100644\n-*** | |   index 0000000..9d7e69f\n+*** | |   index BEFORE..AFTER\n *** | |   --- /dev/null\n *** | |   +++ b/ein\n *** | |   @@ -0,0 +1 @@\n@@ -1455,14 +1458,14 @@ cat >expect <<\\EOF\n *** |\n *** |   diff --git a/ichi b/ichi\n *** |   new file mode 100644\n-*** |   index 0000000..9d7e69f\n+*** |   index BEFORE..AFTER\n *** |   --- /dev/null\n *** |   +++ b/ichi\n *** |   @@ -0,0 +1 @@\n *** |   +ichi\n *** |   diff --git a/one b/one\n *** |   deleted file mode 100644\n-*** |   index 9d7e69f..0000000\n+*** |   index BEFORE..AFTER\n *** |   --- a/one\n *** |   +++ /dev/null\n *** |   @@ -1 +0,0 @@\n@@ -1477,7 +1480,7 @@ cat >expect <<\\EOF\n *** |  1 file changed, 1 insertion(+), 1 deletion(-)\n *** |\n *** | diff --git a/one b/one\n-*** | index 5626abf..9d7e69f 100644\n+*** | index BEFORE..AFTER 100644\n *** | --- a/one\n *** | +++ b/one\n *** | @@ -1 +1 @@\n@@ -1494,7 +1497,7 @@ cat >expect <<\\EOF\n ***\n ***   diff --git a/one b/one\n ***   new file mode 100644\n-***   index 0000000..5626abf\n+***   index BEFORE..AFTER\n ***   --- /dev/null\n ***   +++ b/one\n ***   @@ -0,0 +1 @@\n@@ -1709,10 +1712,10 @@ test_expect_success 'set up --source tests' '\n '\n \n test_expect_success 'log --source paints branch names' '\n-\tcat >expect <<-\\EOF &&\n-\t09e12a9\tsource-b three\n-\t8e393e1\tsource-a two\n-\t1ac6c77\tsource-b one\n+\tcat >expect <<-EOF &&\n+\t$(git rev-parse --short :/three)\tsource-b three\n+\t$(git rev-parse --short :/two  )\tsource-a two\n+\t$(git rev-parse --short :/one  )\tsource-b one\n \tEOF\n \tgit log --oneline --source source-a source-b >actual &&\n \ttest_cmp expect actual\n@@ -1720,19 +1723,19 @@ test_expect_success 'log --source paints branch names' '\n \n test_expect_success 'log --source paints tag names' '\n \tgit tag -m tagged source-tag &&\n-\tcat >expect <<-\\EOF &&\n-\t09e12a9\tsource-tag three\n-\t8e393e1\tsource-a two\n-\t1ac6c77\tsource-tag one\n+\tcat >expect <<-EOF &&\n+\t$(git rev-parse --short :/three)\tsource-tag three\n+\t$(git rev-parse --short :/two  )\tsource-a two\n+\t$(git rev-parse --short :/one  )\tsource-tag one\n \tEOF\n \tgit log --oneline --source source-tag source-a >actual &&\n \ttest_cmp expect actual\n '\n \n test_expect_success 'log --source paints symmetric ranges' '\n-\tcat >expect <<-\\EOF &&\n-\t09e12a9\tsource-b three\n-\t8e393e1\tsource-a two\n+\tcat >expect <<-EOF &&\n+\t$(git rev-parse --short :/three)\tsource-b three\n+\t$(git rev-parse --short :/two  )\tsource-a two\n \tEOF\n \tgit log --oneline --source source-a...source-b >actual &&\n \ttest_cmp expect actual\n"},{"id":"388771","messageId":"CAPig+cRtAZs=OH8GphXpy-TU7B28iW=VM2XPdJ3K8drQdoaFFA@mail.gmail.com","threadId":"52503","inReplyTo":"20191221194936.1346664-11-sandals@crustytoothpaste.net","subject":"Re: [PATCH 10/20] t5319: make test work with SHA-256","fromName":"Eric Sunshine","fromEmail":"sunshine@sunshineco.com","sentAt":"2019-12-22T00:06:47Z","receivedAt":"2019-12-22T00:07:06Z","isPatch":true,"sender":{"key":"sunshine@sunshineco.com","avatar":"https://avatars.githubusercontent.com/u/163641?v=4"},"body":"On Sat, Dec 21, 2019 at 2:52 PM brian m. carlson\n<sandals@crustytoothpaste.net> wrote:\n> This test corrupts various locations in a multi-pack index to test\n> various error responses.  However, these offsets differ between SHA-1\n> indexes and SHA-256 indexes due to differences in object length.  Use\n> test_oid to look up the correct offsets based on the algorithm.\n> ---\n\nMissing sign-off.\n"},{"id":"388799","messageId":"20191222174751.GE163225@camp.crustytoothpaste.net","threadId":"52503","inReplyTo":"CAPig+cRtAZs=OH8GphXpy-TU7B28iW=VM2XPdJ3K8drQdoaFFA@mail.gmail.com","subject":"Re: [PATCH 10/20] t5319: make test work with SHA-256","fromName":"brian m. carlson","fromEmail":"sandals@crustytoothpaste.net","sentAt":"2019-12-22T17:47:51Z","receivedAt":"2019-12-22T17:48:00Z","isPatch":true,"sender":{"key":"sandals@crustytoothpaste.net","avatar":"https://avatars.githubusercontent.com/u/497054?v=4"},"body":"On 2019-12-22 at 00:06:47, Eric Sunshine wrote:\n> On Sat, Dec 21, 2019 at 2:52 PM brian m. carlson\n> <sandals@crustytoothpaste.net> wrote:\n> > This test corrupts various locations in a multi-pack index to test\n> > various error responses.  However, these offsets differ between SHA-1\n> > indexes and SHA-256 indexes due to differences in object length.  Use\n> > test_oid to look up the correct offsets based on the algorithm.\n> > ---\n> \n> Missing sign-off.\n\nWill fix.  In the odd case that no reroll is necessary, I'll include it\nhere:\n\nSigned-off-by: brian m. carlson <sandals@crustytoothpaste.net>\n-- \nbrian m. carlson: Houston, Texas, US\nOpenPGP: https://keybase.io/bk2204\n"},{"id":"388801","messageId":"61195D89-DD1B-4BE7-BC3C-D09E22FD6D1A@mac.com","threadId":"52503","inReplyTo":"20191222174751.GE163225@camp.crustytoothpaste.net","subject":"Re: [PATCH 10/20] t5319: make test work with SHA-256","fromName":"Michael Clark","fromEmail":"michaeljclark@mac.com","sentAt":"2019-12-23T01:25:44Z","receivedAt":"2019-12-23T01:25:49Z","isPatch":true,"sender":{"key":"michaeljclark@mac.com","avatar":"https://gravatar.com/avatar/0401ef79f84c31ebb15fbd8a308f5eb0b1aac2cc8fd71cc5207a0e236acbdc53?d=mp&s=160"},"body":"\n\n> On 23/12/2019, at 6:48 AM, brian m. carlson <sandals@crustytoothpaste.net> wrote:\n> \n> ﻿On 2019-12-22 at 00:06:47, Eric Sunshine wrote:\n>>> On Sat, Dec 21, 2019 at 2:52 PM brian m. carlson\n>>> <sandals@crustytoothpaste.net> wrote:\n>>> This test corrupts various locations in a multi-pack index to test\n>>> various error responses.  However, these offsets differ between SHA-1\n>>> indexes and SHA-256 indexes due to differences in object length.  Use\n>>> test_oid to look up the correct offsets based on the algorithm.\n>>> ---\n>> \n>> Missing sign-off.\n> \n> Will fix.  In the odd case that no reroll is necessary, I'll include it\n> here:\n> \n> Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>\n\nYou have a fan for your work! This is the hard work. I missed adding sign-off in my patch series also. Fixed in the branch mentioned in the email I sent to the list, about alternative SHA algorithms.\n\nI can review this patch series if you like. I’ve applied them in my local tree and run tests. Nothing blew up...\n\nHappy holidays.\n"},{"id":"388922","messageId":"f7d99f77-cf25-398b-49df-137fb7ff44ca@gmail.com","threadId":"52503","inReplyTo":"20191221194936.1346664-10-sandals@crustytoothpaste.net","subject":"Re: [PATCH 09/20] t5319: change invalid offset for SHA-256 compatibility","fromName":"Derrick Stolee","fromEmail":"stolee@gmail.com","sentAt":"2019-12-26T14:36:43Z","receivedAt":"2019-12-26T14:36:47Z","isPatch":true,"sender":{"key":"stolee@gmail.com","avatar":"https://avatars.githubusercontent.com/u/570044?v=4"},"body":"On 12/21/2019 2:49 PM, brian m. carlson wrote:\n> When using SHA-1, the existing value of the byte we use is 0x13, so\n> writing the byte 0x07 serves to corrupt the test and verify that we\n> detect corruption.  However, when we use SHA-256, the value at that\n> offset is already 0x07, so our \"corruption\" doesn't work and the test\n> fails to detect it.\n\nHuh. What a coincidence.\n\n> To provide a value that is truly out of range, let's use 0xff, which is\n> not likely to be a valid value as the high byte of a two-byte offset in\n> a multi-pack index this small.\n\nGood future-proofing. Thanks!\n"},{"id":"388923","messageId":"e0076595-5cdc-2396-3f12-286ba84b1864@gmail.com","threadId":"52503","inReplyTo":"20191221194936.1346664-1-sandals@crustytoothpaste.net","subject":"Re: [PATCH 00/20] SHA-256 test fixes, part 7","fromName":"Derrick Stolee","fromEmail":"stolee@gmail.com","sentAt":"2019-12-26T14:51:39Z","receivedAt":"2019-12-26T14:56:46Z","isPatch":true,"sender":{"key":"stolee@gmail.com","avatar":"https://avatars.githubusercontent.com/u/570044?v=4"},"body":"On 12/21/2019 2:49 PM, brian m. carlson wrote:\n> This is the seventh in a series of test fixes to make our testsuite work\n> with SHA-256.  Included in this series are fixes to a variety of tests\n> from t4054 to t5604.\n\nThanks for doing the hard work needed for this important transition.\n\nThis series looks good to me. I commented only on the parts that I\nknew a lot about just to say \"I'm sorry this was complicated.\"\n\nThanks,\n-Stolee\n"},{"id":"388924","messageId":"54d80d36-f9b9-1c92-faf0-41bbcbe0a133@gmail.com","threadId":"52503","inReplyTo":"20191221194936.1346664-11-sandals@crustytoothpaste.net","subject":"Re: [PATCH 10/20] t5319: make test work with SHA-256","fromName":"Derrick Stolee","fromEmail":"stolee@gmail.com","sentAt":"2019-12-26T14:50:09Z","receivedAt":"2019-12-26T14:56:46Z","isPatch":true,"sender":{"key":"stolee@gmail.com","avatar":"https://avatars.githubusercontent.com/u/570044?v=4"},"body":"On 12/21/2019 2:49 PM, brian m. carlson wrote:\n> This test corrupts various locations in a multi-pack index to test\n> various error responses.  However, these offsets differ between SHA-1\n> indexes and SHA-256 indexes due to differences in object length.  Use\n> test_oid to look up the correct offsets based on the algorithm.\n> ---\n>  t/t5319-multi-pack-index.sh | 22 ++++++++++++++++++----\n>  1 file changed, 18 insertions(+), 4 deletions(-)\n> \n> diff --git a/t/t5319-multi-pack-index.sh b/t/t5319-multi-pack-index.sh\n> index 464bb68e89..43a7a66c9d 100755\n> --- a/t/t5319-multi-pack-index.sh\n> +++ b/t/t5319-multi-pack-index.sh\n> @@ -28,6 +28,20 @@ midx_read_expect () {\n>  \ttest_cmp expect actual\n>  }\n>  \n> +test_expect_success 'setup' '\n> +\ttest_oid_init &&\n> +\ttest_oid_cache <<-EOF\n> +\tidxoff sha1:2999\n> +\tidxoff sha256:3739\n> +\n> +\tpacknameoff sha1:652\n> +\tpacknameoff sha256:940\n> +\n> +\tfanoutoff sha1:1\n> +\tfanoutoff sha256:3\n> +\tEOF\n> +'\n> +\n>  test_expect_success 'write midx with no packs' '\n>  \ttest_when_finished rm -f pack/multi-pack-index &&\n>  \tgit multi-pack-index --object-dir=. write &&\n> @@ -225,7 +239,7 @@ test_expect_success 'verify bad signature' '\n>  \t\t\"multi-pack-index signature\"\n>  '\n>  \n> -HASH_LEN=20\n> +HASH_LEN=$(test_oid rawsz)\n\nI'm glad this was an easy update.\n\n> +MIDX_OFFSET_OID_FANOUT=$(($MIDX_OFFSET_PACKNAMES + $(test_oid packnameoff)))\n> +MIDX_BYTE_OID_FANOUT_ORDER=$((MIDX_OFFSET_OID_FANOUT + 250 * $MIDX_OID_FANOUT_WIDTH + $(test_oid fanoutoff)))\n\nI see why these are necessary: we need to find an exact position that\ncauses an order check to fail. In that sense, the offsets need to match\nthe early bytes of a packfile name or an OID fanout value.\n\n> @@ -387,7 +401,7 @@ test_expect_success 'force some 64-bit offsets with pack-objects' '\n>  \tpack64=$(git pack-objects --index-version=2,0x40 objects64/pack/test-64 <obj-list) &&\n>  \tidx64=objects64/pack/test-64-$pack64.idx &&\n>  \tchmod u+w $idx64 &&\n> -\tcorrupt_data $idx64 2999 \"\\02\" &&\n> +\tcorrupt_data $idx64 $(test_oid idxoff) \"\\02\" &&\n\nSorry that this was not a better-calculated value, but\nyour approach works well here.\n\nThanks,\n-Stolee\n \n\n"},{"id":"389005","messageId":"20191227213528.GB6570@camp.crustytoothpaste.net","threadId":"52503","inReplyTo":"54d80d36-f9b9-1c92-faf0-41bbcbe0a133@gmail.com","subject":"Re: [PATCH 10/20] t5319: make test work with SHA-256","fromName":"brian m. carlson","fromEmail":"sandals@crustytoothpaste.net","sentAt":"2019-12-27T21:35:28Z","receivedAt":"2019-12-27T21:35:38Z","isPatch":true,"sender":{"key":"sandals@crustytoothpaste.net","avatar":"https://avatars.githubusercontent.com/u/497054?v=4"},"body":"On 2019-12-26 at 14:50:09, Derrick Stolee wrote:\n> On 12/21/2019 2:49 PM, brian m. carlson wrote:\n> > @@ -387,7 +401,7 @@ test_expect_success 'force some 64-bit offsets with pack-objects' '\n> >  \tpack64=$(git pack-objects --index-version=2,0x40 objects64/pack/test-64 <obj-list) &&\n> >  \tidx64=objects64/pack/test-64-$pack64.idx &&\n> >  \tchmod u+w $idx64 &&\n> > -\tcorrupt_data $idx64 2999 \"\\02\" &&\n> > +\tcorrupt_data $idx64 $(test_oid idxoff) \"\\02\" &&\n> \n> Sorry that this was not a better-calculated value, but\n> your approach works well here.\n\nThat's okay.  I appreciate that you attempted to make things robust, and\nthe documentary value of the variables was helpful in fixing these\ntests.\n-- \nbrian m. carlson: Houston, Texas, US\nOpenPGP: https://keybase.io/bk2204\n"}]}