Merge branch 'bc/hash-independent-tests-part-5'
authorJunio C Hamano <gitster@pobox.com>
Mon, 30 Sep 2019 04:19:23 +0000 (13:19 +0900)
committerJunio C Hamano <gitster@pobox.com>
Mon, 30 Sep 2019 04:19:23 +0000 (13:19 +0900)
Preparation for SHA-256 upgrade continues in the test department.

* bc/hash-independent-tests-part-5:
  t4009: make hash size independent
  t4002: make hash independent
  t4000: make hash size independent
  t3903: abstract away SHA-1-specific constants
  t3800: make hash-size independent
  t3600: make hash size independent
  t3506: make hash independent
  t3430: avoid hard-coded object IDs
  t3404: abstract away SHA-1-specific constants
  t3306: abstract away SHA-1-specific constants
  t3305: make hash size independent
  t3301: abstract away SHA-1-specific constants
  t3206: abstract away hash size constants
  t3201: abstract away SHA-1-specific constants

14 files changed:
t/t3201-branch-contains.sh
t/t3206-range-diff.sh
t/t3301-notes.sh
t/t3305-notes-fanout.sh
t/t3306-notes-prune.sh
t/t3404-rebase-interactive.sh
t/t3430-rebase-merges.sh
t/t3506-cherry-pick-ff.sh
t/t3600-rm.sh
t/t3800-mktag.sh
t/t3903-stash.sh
t/t4000-diff-format.sh
t/t4002-diff-basic.sh
t/t4009-diff-rename-4.sh

index 0ea4fc4..40251c9 100755 (executable)
@@ -192,10 +192,10 @@ test_expect_success 'branch --merged with --verbose' '
        EOF
        test_cmp expect actual &&
        git branch --verbose --merged topic >actual &&
-       cat >expect <<-\EOF &&
-         master c77a0a9 second on master
-       * topic  2c939f4 [ahead 1] foo
-         zzz    c77a0a9 second on master
+       cat >expect <<-EOF &&
+         master $(git rev-parse --short master) second on master
+       * topic  $(git rev-parse --short topic ) [ahead 1] foo
+         zzz    $(git rev-parse --short zzz   ) second on master
        EOF
        test_i18ncmp expect actual
 '
index ec54865..0120f76 100755 (executable)
@@ -8,17 +8,124 @@ test_description='range-diff tests'
 # harm than good.  We need some real history.
 
 test_expect_success 'setup' '
-       git fast-import < "$TEST_DIRECTORY"/t3206/history.export
+       git fast-import < "$TEST_DIRECTORY"/t3206/history.export &&
+       test_oid_cache <<-EOF
+       # topic
+       t1 sha1:4de457d
+       t2 sha1:fccce22
+       t3 sha1:147e64e
+       t4 sha1:a63e992
+       t1 sha256:b89f8b9
+       t2 sha256:5f12aad
+       t3 sha256:ea8b273
+       t4 sha256:14b7336
+
+       # unmodified
+       u1 sha1:35b9b25
+       u2 sha1:de345ab
+       u3 sha1:9af6654
+       u4 sha1:2901f77
+       u1 sha256:e3731be
+       u2 sha256:14fadf8
+       u3 sha256:736c4bc
+       u4 sha256:673e77d
+
+       # reordered
+       r1 sha1:aca177a
+       r2 sha1:14ad629
+       r3 sha1:ee58208
+       r4 sha1:307b27a
+       r1 sha256:f59d3aa
+       r2 sha256:fb261a8
+       r3 sha256:cb2649b
+       r4 sha256:958577e
+
+       # removed (deleted)
+       d1 sha1:7657159
+       d2 sha1:43d84d3
+       d3 sha1:a740396
+       d1 sha256:e312513
+       d2 sha256:eb19258
+       d3 sha256:1ccb3c1
+
+       # added
+       a1 sha1:2716022
+       a2 sha1:b62accd
+       a3 sha1:df46cfa
+       a4 sha1:3e64548
+       a5 sha1:12b4063
+       a1 sha256:d724f4d
+       a2 sha256:1de7762
+       a3 sha256:e159431
+       a4 sha256:b3e483c
+       a5 sha256:90866a7
+
+       # rebased
+       b1 sha1:cc9c443
+       b2 sha1:c5d9641
+       b3 sha1:28cc2b6
+       b4 sha1:5628ab7
+       b5 sha1:a31b12e
+       b1 sha256:a1a8717
+       b2 sha256:20a5862
+       b3 sha256:587172a
+       b4 sha256:2721c5d
+       b5 sha256:7b57864
+
+       # changed
+       c1 sha1:a4b3333
+       c2 sha1:f51d370
+       c3 sha1:0559556
+       c4 sha1:d966c5c
+       c1 sha256:f8c2b9d
+       c2 sha256:3fb6318
+       c3 sha256:168ab68
+       c4 sha256:3526539
+
+       # changed-message
+       m1 sha1:f686024
+       m2 sha1:4ab067d
+       m3 sha1:b9cb956
+       m4 sha1:8add5f1
+       m1 sha256:31e6281
+       m2 sha256:a06bf1b
+       m3 sha256:82dc654
+       m4 sha256:48470c5
+
+       # renamed
+       n1 sha1:f258d75
+       n2 sha1:017b62d
+       n3 sha1:3ce7af6
+       n4 sha1:1e6226b
+       n1 sha256:ad52114
+       n2 sha256:3b54c8f
+       n3 sha256:3b0a644
+       n4 sha256:e461653
+
+       # added and removed
+       s1 sha1:096b1ba
+       s2 sha1:d92e698
+       s3 sha1:9a1db4d
+       s4 sha1:fea3b5c
+       s1 sha256:a7f9134
+       s2 sha256:b4c2580
+       s3 sha256:1d62aa2
+       s4 sha256:48160e8
+
+       # Empty delimiter (included so lines match neatly)
+       __ sha1:-------
+       __ sha256:-------
+       EOF
 '
 
 test_expect_success 'simple A..B A..C (unmodified)' '
        git range-diff --no-color master..topic master..unmodified \
                >actual &&
        cat >expected <<-EOF &&
-       1:  4de457d = 1:  35b9b25 s/5/A/
-       2:  fccce22 = 2:  de345ab s/4/A/
-       3:  147e64e = 3:  9af6654 s/11/B/
-       4:  a63e992 = 4:  2901f77 s/12/B/
+       1:  $(test_oid t1) = 1:  $(test_oid u1) s/5/A/
+       2:  $(test_oid t2) = 2:  $(test_oid u2) s/4/A/
+       3:  $(test_oid t3) = 3:  $(test_oid u3) s/11/B/
+       4:  $(test_oid t4) = 4:  $(test_oid u4) s/12/B/
        EOF
        test_cmp expected actual
 '
@@ -38,10 +145,10 @@ test_expect_success 'simple A B C (unmodified)' '
 test_expect_success 'trivial reordering' '
        git range-diff --no-color master topic reordered >actual &&
        cat >expected <<-EOF &&
-       1:  4de457d = 1:  aca177a s/5/A/
-       3:  147e64e = 2:  14ad629 s/11/B/
-       4:  a63e992 = 3:  ee58208 s/12/B/
-       2:  fccce22 = 4:  307b27a s/4/A/
+       1:  $(test_oid t1) = 1:  $(test_oid r1) s/5/A/
+       3:  $(test_oid t3) = 2:  $(test_oid r2) s/11/B/
+       4:  $(test_oid t4) = 3:  $(test_oid r3) s/12/B/
+       2:  $(test_oid t2) = 4:  $(test_oid r4) s/4/A/
        EOF
        test_cmp expected actual
 '
@@ -49,10 +156,10 @@ test_expect_success 'trivial reordering' '
 test_expect_success 'removed a commit' '
        git range-diff --no-color master topic removed >actual &&
        cat >expected <<-EOF &&
-       1:  4de457d = 1:  7657159 s/5/A/
-       2:  fccce22 < -:  ------- s/4/A/
-       3:  147e64e = 2:  43d84d3 s/11/B/
-       4:  a63e992 = 3:  a740396 s/12/B/
+       1:  $(test_oid t1) = 1:  $(test_oid d1) s/5/A/
+       2:  $(test_oid t2) < -:  $(test_oid __) s/4/A/
+       3:  $(test_oid t3) = 2:  $(test_oid d2) s/11/B/
+       4:  $(test_oid t4) = 3:  $(test_oid d3) s/12/B/
        EOF
        test_cmp expected actual
 '
@@ -60,11 +167,11 @@ test_expect_success 'removed a commit' '
 test_expect_success 'added a commit' '
        git range-diff --no-color master topic added >actual &&
        cat >expected <<-EOF &&
-       1:  4de457d = 1:  2716022 s/5/A/
-       2:  fccce22 = 2:  b62accd s/4/A/
-       -:  ------- > 3:  df46cfa s/6/A/
-       3:  147e64e = 4:  3e64548 s/11/B/
-       4:  a63e992 = 5:  12b4063 s/12/B/
+       1:  $(test_oid t1) = 1:  $(test_oid a1) s/5/A/
+       2:  $(test_oid t2) = 2:  $(test_oid a2) s/4/A/
+       -:  $(test_oid __) > 3:  $(test_oid a3) s/6/A/
+       3:  $(test_oid t3) = 4:  $(test_oid a4) s/11/B/
+       4:  $(test_oid t4) = 5:  $(test_oid a5) s/12/B/
        EOF
        test_cmp expected actual
 '
@@ -72,10 +179,10 @@ test_expect_success 'added a commit' '
 test_expect_success 'new base, A B C' '
        git range-diff --no-color master topic rebased >actual &&
        cat >expected <<-EOF &&
-       1:  4de457d = 1:  cc9c443 s/5/A/
-       2:  fccce22 = 2:  c5d9641 s/4/A/
-       3:  147e64e = 3:  28cc2b6 s/11/B/
-       4:  a63e992 = 4:  5628ab7 s/12/B/
+       1:  $(test_oid t1) = 1:  $(test_oid b1) s/5/A/
+       2:  $(test_oid t2) = 2:  $(test_oid b2) s/4/A/
+       3:  $(test_oid t3) = 3:  $(test_oid b3) s/11/B/
+       4:  $(test_oid t4) = 4:  $(test_oid b4) s/12/B/
        EOF
        test_cmp expected actual
 '
@@ -84,11 +191,11 @@ test_expect_success 'new base, B...C' '
        # this syntax includes the commits from master!
        git range-diff --no-color topic...rebased >actual &&
        cat >expected <<-EOF &&
-       -:  ------- > 1:  a31b12e unrelated
-       1:  4de457d = 2:  cc9c443 s/5/A/
-       2:  fccce22 = 3:  c5d9641 s/4/A/
-       3:  147e64e = 4:  28cc2b6 s/11/B/
-       4:  a63e992 = 5:  5628ab7 s/12/B/
+       -:  $(test_oid __) > 1:  $(test_oid b5) unrelated
+       1:  $(test_oid t1) = 2:  $(test_oid b1) s/5/A/
+       2:  $(test_oid t2) = 3:  $(test_oid b2) s/4/A/
+       3:  $(test_oid t3) = 4:  $(test_oid b3) s/11/B/
+       4:  $(test_oid t4) = 5:  $(test_oid b4) s/12/B/
        EOF
        test_cmp expected actual
 '
@@ -96,9 +203,9 @@ test_expect_success 'new base, B...C' '
 test_expect_success 'changed commit' '
        git range-diff --no-color topic...changed >actual &&
        cat >expected <<-EOF &&
-       1:  4de457d = 1:  a4b3333 s/5/A/
-       2:  fccce22 = 2:  f51d370 s/4/A/
-       3:  147e64e ! 3:  0559556 s/11/B/
+       1:  $(test_oid t1) = 1:  $(test_oid c1) s/5/A/
+       2:  $(test_oid t2) = 2:  $(test_oid c2) s/4/A/
+       3:  $(test_oid t3) ! 3:  $(test_oid c3) s/11/B/
            @@ file: A
              9
              10
@@ -108,7 +215,7 @@ test_expect_success 'changed commit' '
              12
              13
              14
-       4:  a63e992 ! 4:  d966c5c s/12/B/
+       4:  $(test_oid t4) ! 4:  $(test_oid c4) s/12/B/
            @@ file
             @@ file: A
              9
@@ -125,10 +232,10 @@ test_expect_success 'changed commit' '
 test_expect_success 'changed commit with --no-patch diff option' '
        git range-diff --no-color --no-patch topic...changed >actual &&
        cat >expected <<-EOF &&
-       1:  4de457d = 1:  a4b3333 s/5/A/
-       2:  fccce22 = 2:  f51d370 s/4/A/
-       3:  147e64e ! 3:  0559556 s/11/B/
-       4:  a63e992 ! 4:  d966c5c s/12/B/
+       1:  $(test_oid t1) = 1:  $(test_oid c1) s/5/A/
+       2:  $(test_oid t2) = 2:  $(test_oid c2) s/4/A/
+       3:  $(test_oid t3) ! 3:  $(test_oid c3) s/11/B/
+       4:  $(test_oid t4) ! 4:  $(test_oid c4) s/12/B/
        EOF
        test_cmp expected actual
 '
@@ -136,16 +243,16 @@ test_expect_success 'changed commit with --no-patch diff option' '
 test_expect_success 'changed commit with --stat diff option' '
        git range-diff --no-color --stat topic...changed >actual &&
        cat >expected <<-EOF &&
-       1:  4de457d = 1:  a4b3333 s/5/A/
+       1:  $(test_oid t1) = 1:  $(test_oid c1) s/5/A/
             a => b | 0
             1 file changed, 0 insertions(+), 0 deletions(-)
-       2:  fccce22 = 2:  f51d370 s/4/A/
+       2:  $(test_oid t2) = 2:  $(test_oid c2) s/4/A/
             a => b | 0
             1 file changed, 0 insertions(+), 0 deletions(-)
-       3:  147e64e ! 3:  0559556 s/11/B/
+       3:  $(test_oid t3) ! 3:  $(test_oid c3) s/11/B/
             a => b | 0
             1 file changed, 0 insertions(+), 0 deletions(-)
-       4:  a63e992 ! 4:  d966c5c s/12/B/
+       4:  $(test_oid t4) ! 4:  $(test_oid c4) s/12/B/
             a => b | 0
             1 file changed, 0 insertions(+), 0 deletions(-)
        EOF
@@ -155,9 +262,9 @@ test_expect_success 'changed commit with --stat diff option' '
 test_expect_success 'changed commit with sm config' '
        git range-diff --no-color --submodule=log topic...changed >actual &&
        cat >expected <<-EOF &&
-       1:  4de457d = 1:  a4b3333 s/5/A/
-       2:  fccce22 = 2:  f51d370 s/4/A/
-       3:  147e64e ! 3:  0559556 s/11/B/
+       1:  $(test_oid t1) = 1:  $(test_oid c1) s/5/A/
+       2:  $(test_oid t2) = 2:  $(test_oid c2) s/4/A/
+       3:  $(test_oid t3) ! 3:  $(test_oid c3) s/11/B/
            @@ file: A
              9
              10
@@ -167,7 +274,7 @@ test_expect_success 'changed commit with sm config' '
              12
              13
              14
-       4:  a63e992 ! 4:  d966c5c s/12/B/
+       4:  $(test_oid t4) ! 4:  $(test_oid c4) s/12/B/
            @@ file
             @@ file: A
              9
@@ -184,8 +291,8 @@ test_expect_success 'changed commit with sm config' '
 test_expect_success 'renamed file' '
        git range-diff --no-color --submodule=log topic...renamed-file >actual &&
        sed s/Z/\ /g >expected <<-EOF &&
-       1:  4de457d = 1:  f258d75 s/5/A/
-       2:  fccce22 ! 2:  017b62d s/4/A/
+       1:  $(test_oid t1) = 1:  $(test_oid n1) s/5/A/
+       2:  $(test_oid t2) ! 2:  $(test_oid n2) s/4/A/
            @@ Metadata
            ZAuthor: Thomas Rast <trast@inf.ethz.ch>
            Z
@@ -198,7 +305,7 @@ test_expect_success 'renamed file' '
            Z@@
            Z 1
            Z 2
-       3:  147e64e ! 3:  3ce7af6 s/11/B/
+       3:  $(test_oid t3) ! 3:  $(test_oid n3) s/11/B/
            @@ Metadata
            Z ## Commit message ##
            Z    s/11/B/
@@ -210,7 +317,7 @@ test_expect_success 'renamed file' '
            Z 8
            Z 9
            Z 10
-       4:  a63e992 ! 4:  1e6226b s/12/B/
+       4:  $(test_oid t4) ! 4:  $(test_oid n4) s/12/B/
            @@ Metadata
            Z ## Commit message ##
            Z    s/12/B/
@@ -229,8 +336,8 @@ test_expect_success 'renamed file' '
 test_expect_success 'file added and later removed' '
        git range-diff --no-color --submodule=log topic...added-removed >actual &&
        sed s/Z/\ /g >expected <<-EOF &&
-       1:  4de457d = 1:  096b1ba s/5/A/
-       2:  fccce22 ! 2:  d92e698 s/4/A/
+       1:  $(test_oid t1) = 1:  $(test_oid s1) s/5/A/
+       2:  $(test_oid t2) ! 2:  $(test_oid s2) s/4/A/
            @@ Metadata
            ZAuthor: Thomas Rast <trast@inf.ethz.ch>
            Z
@@ -246,7 +353,7 @@ test_expect_success 'file added and later removed' '
            Z 7
            +
            + ## new-file (new) ##
-       3:  147e64e ! 3:  9a1db4d s/11/B/
+       3:  $(test_oid t3) ! 3:  $(test_oid s3) s/11/B/
            @@ Metadata
            ZAuthor: Thomas Rast <trast@inf.ethz.ch>
            Z
@@ -262,7 +369,7 @@ test_expect_success 'file added and later removed' '
            Z 14
            +
            + ## new-file (deleted) ##
-       4:  a63e992 = 4:  fea3b5c s/12/B/
+       4:  $(test_oid t4) = 4:  $(test_oid s4) s/12/B/
        EOF
        test_cmp expected actual
 '
@@ -275,8 +382,8 @@ test_expect_success 'no commits on one side' '
 test_expect_success 'changed message' '
        git range-diff --no-color topic...changed-message >actual &&
        sed s/Z/\ /g >expected <<-EOF &&
-       1:  4de457d = 1:  f686024 s/5/A/
-       2:  fccce22 ! 2:  4ab067d s/4/A/
+       1:  $(test_oid t1) = 1:  $(test_oid m1) s/5/A/
+       2:  $(test_oid t2) ! 2:  $(test_oid m2) s/4/A/
            @@ Metadata
            Z ## Commit message ##
            Z    s/4/A/
@@ -286,16 +393,16 @@ test_expect_success 'changed message' '
            Z ## file ##
            Z@@
            Z 1
-       3:  147e64e = 3:  b9cb956 s/11/B/
-       4:  a63e992 = 4:  8add5f1 s/12/B/
+       3:  $(test_oid t3) = 3:  $(test_oid m3) s/11/B/
+       4:  $(test_oid t4) = 4:  $(test_oid m4) s/12/B/
        EOF
        test_cmp expected actual
 '
 
 test_expect_success 'dual-coloring' '
-       sed -e "s|^:||" >expect <<-\EOF &&
-       :<YELLOW>1:  a4b3333 = 1:  f686024 s/5/A/<RESET>
-       :<RED>2:  f51d370 <RESET><YELLOW>!<RESET><GREEN> 2:  4ab067d<RESET><YELLOW> s/4/A/<RESET>
+       sed -e "s|^:||" >expect <<-EOF &&
+       :<YELLOW>1:  $(test_oid c1) = 1:  $(test_oid m1) s/5/A/<RESET>
+       :<RED>2:  $(test_oid c2) <RESET><YELLOW>!<RESET><GREEN> 2:  $(test_oid m2)<RESET><YELLOW> s/4/A/<RESET>
        :    <REVERSE><CYAN>@@<RESET> <RESET>Metadata<RESET>
        :      ## Commit message ##<RESET>
        :         s/4/A/<RESET>
@@ -305,7 +412,7 @@ test_expect_success 'dual-coloring' '
        :      ## file ##<RESET>
        :    <CYAN> @@<RESET>
        :      1<RESET>
-       :<RED>3:  0559556 <RESET><YELLOW>!<RESET><GREEN> 3:  b9cb956<RESET><YELLOW> s/11/B/<RESET>
+       :<RED>3:  $(test_oid c3) <RESET><YELLOW>!<RESET><GREEN> 3:  $(test_oid m3)<RESET><YELLOW> s/11/B/<RESET>
        :    <REVERSE><CYAN>@@<RESET> <RESET>file: A<RESET>
        :      9<RESET>
        :      10<RESET>
@@ -315,7 +422,7 @@ test_expect_success 'dual-coloring' '
        :      12<RESET>
        :      13<RESET>
        :      14<RESET>
-       :<RED>4:  d966c5c <RESET><YELLOW>!<RESET><GREEN> 4:  8add5f1<RESET><YELLOW> s/12/B/<RESET>
+       :<RED>4:  $(test_oid c4) <RESET><YELLOW>!<RESET><GREEN> 4:  $(test_oid m4)<RESET><YELLOW> s/12/B/<RESET>
        :    <REVERSE><CYAN>@@<RESET> <RESET>file<RESET>
        :    <CYAN> @@ file: A<RESET>
        :      9<RESET>
index 704bbc6..d3fa298 100755 (executable)
@@ -66,8 +66,9 @@ test_expect_success 'show notes entry with %N' '
 '
 
 test_expect_success 'create reflog entry' '
+       ref=$(git rev-parse --short refs/notes/commits) &&
        cat <<-EOF >expect &&
-               a1d8fa6 refs/notes/commits@{0}: notes: Notes added by '\''git notes add'\''
+               $ref refs/notes/commits@{0}: notes: Notes added by '\''git notes add'\''
        EOF
        git reflog show refs/notes/commits >actual &&
        test_cmp expect actual
@@ -134,8 +135,9 @@ test_expect_success 'can overwrite existing note with "git notes add -f"' '
 '
 
 test_expect_success 'show notes' '
+       commit=$(git rev-parse HEAD) &&
        cat >expect <<-EOF &&
-               commit 7a4ca6ee52a974a66cbaa78e33214535dff1d691
+               commit $commit
                Author: A U Thor <author@example.com>
                Date:   Thu Apr 7 15:14:13 2005 -0700
 
@@ -152,8 +154,9 @@ test_expect_success 'show notes' '
 test_expect_success 'show multi-line notes' '
        test_commit 3rd &&
        MSG="b3${LF}c3c3c3c3${LF}d3d3d3" git notes add &&
+       commit=$(git rev-parse HEAD) &&
        cat >expect-multiline <<-EOF &&
-               commit d07d62e5208f22eb5695e7eb47667dc8b9860290
+               commit $commit
                Author: A U Thor <author@example.com>
                Date:   Thu Apr 7 15:15:13 2005 -0700
 
@@ -174,8 +177,9 @@ test_expect_success 'show -F notes' '
        test_commit 4th &&
        echo "xyzzy" >note5 &&
        git notes add -F note5 &&
+       commit=$(git rev-parse HEAD) &&
        cat >expect-F <<-EOF &&
-               commit 0f7aa3ec6325aeb88b910453bb3eb37c49d75c11
+               commit $commit
                Author: A U Thor <author@example.com>
                Date:   Thu Apr 7 15:16:13 2005 -0700
 
@@ -198,10 +202,13 @@ test_expect_success 'Re-adding -F notes without -f fails' '
 '
 
 test_expect_success 'git log --pretty=raw does not show notes' '
+       commit=$(git rev-parse HEAD) &&
+       tree=$(git rev-parse HEAD^{tree}) &&
+       parent=$(git rev-parse HEAD^) &&
        cat >expect <<-EOF &&
-               commit 0f7aa3ec6325aeb88b910453bb3eb37c49d75c11
-               tree 05ac65288c4c4b3b709a020ae94b2ece2f2201ae
-               parent d07d62e5208f22eb5695e7eb47667dc8b9860290
+               commit $commit
+               tree $tree
+               parent $parent
                author A U Thor <author@example.com> 1112912173 -0700
                committer C O Mitter <committer@example.com> 1112912173 -0700
 
@@ -291,8 +298,9 @@ test_expect_success 'git log --no-notes resets ref list' '
 test_expect_success 'show -m notes' '
        test_commit 5th &&
        git notes add -m spam -m "foo${LF}bar${LF}baz" &&
+       commit=$(git rev-parse HEAD) &&
        cat >expect-m <<-EOF &&
-               commit 7f9ad8836c775acb134c0a055fc55fb4cd1ba361
+               commit $commit
                Author: A U Thor <author@example.com>
                Date:   Thu Apr 7 15:17:13 2005 -0700
 
@@ -313,8 +321,9 @@ test_expect_success 'show -m notes' '
 
 test_expect_success 'remove note with add -f -F /dev/null' '
        git notes add -f -F /dev/null &&
+       commit=$(git rev-parse HEAD) &&
        cat >expect-rm-F <<-EOF &&
-               commit 7f9ad8836c775acb134c0a055fc55fb4cd1ba361
+               commit $commit
                Author: A U Thor <author@example.com>
                Date:   Thu Apr 7 15:17:13 2005 -0700
 
@@ -356,14 +365,16 @@ test_expect_success 'create note with combination of -m and -F' '
 test_expect_success 'remove note with "git notes remove"' '
        git notes remove HEAD^ &&
        git notes remove &&
+       commit=$(git rev-parse HEAD) &&
+       parent=$(git rev-parse HEAD^) &&
        cat >expect-rm-remove <<-EOF &&
-               commit 7f9ad8836c775acb134c0a055fc55fb4cd1ba361
+               commit $commit
                Author: A U Thor <author@example.com>
                Date:   Thu Apr 7 15:17:13 2005 -0700
 
                ${indent}5th
 
-               commit 0f7aa3ec6325aeb88b910453bb3eb37c49d75c11
+               commit $parent
                Author: A U Thor <author@example.com>
                Date:   Thu Apr 7 15:16:13 2005 -0700
 
@@ -459,9 +470,11 @@ test_expect_success 'removing with --stdin --ignore-missing' '
 '
 
 test_expect_success 'list notes with "git notes list"' '
-       cat >expect <<-EOF &&
-               c9c6af7f78bc47490dbf3e822cf2f3c24d4b9061 7a4ca6ee52a974a66cbaa78e33214535dff1d691
-               c18dc024e14f08d18d14eea0d747ff692d66d6a3 d07d62e5208f22eb5695e7eb47667dc8b9860290
+       commit_2=$(git rev-parse 2nd) &&
+       commit_3=$(git rev-parse 3rd) &&
+       sort -t" " -k2 >expect <<-EOF &&
+               $(git rev-parse refs/notes/commits:$commit_2) $commit_2
+               $(git rev-parse refs/notes/commits:$commit_3) $commit_3
        EOF
        git notes list >actual &&
        test_cmp expect actual
@@ -474,7 +487,7 @@ test_expect_success 'list notes with "git notes"' '
 
 test_expect_success 'list specific note with "git notes list <object>"' '
        cat >expect <<-EOF &&
-               c18dc024e14f08d18d14eea0d747ff692d66d6a3
+               $(git rev-parse refs/notes/commits:$commit_3)
        EOF
        git notes list HEAD^^ >actual &&
        test_cmp expect actual
@@ -498,10 +511,11 @@ test_expect_success 'append to existing note with "git notes append"' '
 '
 
 test_expect_success '"git notes list" does not expand to "git notes list HEAD"' '
-       cat >expect_list <<-EOF &&
-               c9c6af7f78bc47490dbf3e822cf2f3c24d4b9061 7a4ca6ee52a974a66cbaa78e33214535dff1d691
-               4b6ad22357cc8a1296720574b8d2fbc22fab0671 7f9ad8836c775acb134c0a055fc55fb4cd1ba361
-               c18dc024e14f08d18d14eea0d747ff692d66d6a3 d07d62e5208f22eb5695e7eb47667dc8b9860290
+       commit_5=$(git rev-parse 5th) &&
+       sort -t" " -k2 >expect_list <<-EOF &&
+               $(git rev-parse refs/notes/commits:$commit_2) $commit_2
+               $(git rev-parse refs/notes/commits:$commit_3) $commit_3
+               $(git rev-parse refs/notes/commits:$commit_5) $commit_5
        EOF
        git notes list >actual &&
        test_cmp expect_list actual
@@ -531,8 +545,9 @@ test_expect_success 'appending empty string to non-existing note does not create
 test_expect_success 'create other note on a different notes ref (setup)' '
        test_commit 6th &&
        GIT_NOTES_REF="refs/notes/other" git notes add -m "other note" &&
+       commit=$(git rev-parse HEAD) &&
        cat >expect-not-other <<-EOF &&
-               commit 2c125331118caba0ff8238b7f4958ac6e93fe39c
+               commit $commit
                Author: A U Thor <author@example.com>
                Date:   Thu Apr 7 15:18:13 2005 -0700
 
@@ -569,8 +584,10 @@ test_expect_success 'Do not show note when core.notesRef is overridden' '
 '
 
 test_expect_success 'Show all notes when notes.displayRef=refs/notes/*' '
+       commit=$(git rev-parse HEAD) &&
+       parent=$(git rev-parse HEAD^) &&
        cat >expect-both <<-EOF &&
-               commit 2c125331118caba0ff8238b7f4958ac6e93fe39c
+               commit $commit
                Author: A U Thor <author@example.com>
                Date:   Thu Apr 7 15:18:13 2005 -0700
 
@@ -582,7 +599,7 @@ test_expect_success 'Show all notes when notes.displayRef=refs/notes/*' '
                Notes (other):
                ${indent}other note
 
-               commit 7f9ad8836c775acb134c0a055fc55fb4cd1ba361
+               commit $parent
                Author: A U Thor <author@example.com>
                Date:   Thu Apr 7 15:17:13 2005 -0700
 
@@ -616,8 +633,9 @@ test_expect_success 'notes.displayRef can be given more than once' '
 '
 
 test_expect_success 'notes.displayRef respects order' '
+       commit=$(git rev-parse HEAD) &&
        cat >expect-both-reversed <<-EOF &&
-               commit 2c125331118caba0ff8238b7f4958ac6e93fe39c
+               commit $commit
                Author: A U Thor <author@example.com>
                Date:   Thu Apr 7 15:18:13 2005 -0700
 
@@ -642,14 +660,16 @@ test_expect_success 'GIT_NOTES_DISPLAY_REF works' '
 '
 
 test_expect_success 'GIT_NOTES_DISPLAY_REF overrides config' '
+       commit=$(git rev-parse HEAD) &&
+       parent=$(git rev-parse HEAD^) &&
        cat >expect-none <<-EOF &&
-               commit 2c125331118caba0ff8238b7f4958ac6e93fe39c
+               commit $commit
                Author: A U Thor <author@example.com>
                Date:   Thu Apr 7 15:18:13 2005 -0700
 
                ${indent}6th
 
-               commit 7f9ad8836c775acb134c0a055fc55fb4cd1ba361
+               commit $parent
                Author: A U Thor <author@example.com>
                Date:   Thu Apr 7 15:17:13 2005 -0700
 
@@ -666,8 +686,9 @@ test_expect_success '--show-notes=* adds to GIT_NOTES_DISPLAY_REF' '
 '
 
 test_expect_success '--no-standard-notes' '
+       commit=$(git rev-parse HEAD) &&
        cat >expect-commits <<-EOF &&
-               commit 2c125331118caba0ff8238b7f4958ac6e93fe39c
+               commit $commit
                Author: A U Thor <author@example.com>
                Date:   Thu Apr 7 15:18:13 2005 -0700
 
@@ -712,8 +733,10 @@ test_expect_success 'Allow notes on non-commits (trees, blobs, tags)' '
 '
 
 test_expect_success 'create note from other note with "git notes add -C"' '
+       test_commit 7th &&
+       commit=$(git rev-parse HEAD) &&
        cat >expect <<-EOF &&
-               commit fb01e0ca8c33b6cc0c6451dde747f97df567cb5c
+               commit $commit
                Author: A U Thor <author@example.com>
                Date:   Thu Apr 7 15:19:13 2005 -0700
 
@@ -722,7 +745,6 @@ test_expect_success 'create note from other note with "git notes add -C"' '
                Notes:
                ${indent}order test
        EOF
-       test_commit 7th &&
        git notes add -C $(git notes list HEAD^) &&
        git log -1 >actual &&
        test_cmp expect actual &&
@@ -744,8 +766,9 @@ test_expect_success 'create note from non-blob with "git notes add -C" fails' '
 '
 
 test_expect_success 'create note from blob with "git notes add -C" reuses blob id' '
+       commit=$(git rev-parse HEAD) &&
        cat >expect <<-EOF &&
-               commit 9a4c31c7f722b5d517e92c64e932dd751e1413bf
+               commit $commit
                Author: A U Thor <author@example.com>
                Date:   Thu Apr 7 15:20:13 2005 -0700
 
@@ -762,8 +785,10 @@ test_expect_success 'create note from blob with "git notes add -C" reuses blob i
 '
 
 test_expect_success 'create note from other note with "git notes add -c"' '
+       test_commit 9th &&
+       commit=$(git rev-parse HEAD) &&
        cat >expect <<-EOF &&
-               commit 2e0db4bc649e174d667a1cde19e725cf897a5bd2
+               commit $commit
                Author: A U Thor <author@example.com>
                Date:   Thu Apr 7 15:21:13 2005 -0700
 
@@ -772,7 +797,6 @@ test_expect_success 'create note from other note with "git notes add -c"' '
                Notes:
                ${indent}yet another note
        EOF
-       test_commit 9th &&
        MSG="yet another note" git notes add -c $(git notes list HEAD^^) &&
        git log -1 >actual &&
        test_cmp expect actual
@@ -785,8 +809,9 @@ test_expect_success 'create note from non-existing note with "git notes add -c"
 '
 
 test_expect_success 'append to note from other note with "git notes append -C"' '
+       commit=$(git rev-parse HEAD^) &&
        cat >expect <<-EOF &&
-               commit 2e0db4bc649e174d667a1cde19e725cf897a5bd2
+               commit $commit
                Author: A U Thor <author@example.com>
                Date:   Thu Apr 7 15:21:13 2005 -0700
 
@@ -803,8 +828,9 @@ test_expect_success 'append to note from other note with "git notes append -C"'
 '
 
 test_expect_success 'create note from other note with "git notes append -c"' '
+       commit=$(git rev-parse HEAD) &&
        cat >expect <<-EOF &&
-               commit 7c3b87ab368f81e11b1ea87b2ab99a71ccd25406
+               commit $commit
                Author: A U Thor <author@example.com>
                Date:   Thu Apr 7 15:22:13 2005 -0700
 
@@ -819,8 +845,9 @@ test_expect_success 'create note from other note with "git notes append -c"' '
 '
 
 test_expect_success 'append to note from other note with "git notes append -c"' '
+       commit=$(git rev-parse HEAD) &&
        cat >expect <<-EOF &&
-               commit 7c3b87ab368f81e11b1ea87b2ab99a71ccd25406
+               commit $commit
                Author: A U Thor <author@example.com>
                Date:   Thu Apr 7 15:22:13 2005 -0700
 
@@ -837,8 +864,10 @@ test_expect_success 'append to note from other note with "git notes append -c"'
 '
 
 test_expect_success 'copy note with "git notes copy"' '
+       test_commit 11th &&
+       commit=$(git rev-parse HEAD) &&
        cat >expect <<-EOF &&
-               commit a446fff8777efdc6eb8f4b7c8a5ff699484df0d5
+               commit $commit
                Author: A U Thor <author@example.com>
                Date:   Thu Apr 7 15:23:13 2005 -0700
 
@@ -849,7 +878,6 @@ test_expect_success 'copy note with "git notes copy"' '
                ${indent}
                ${indent}yet another note
        EOF
-       test_commit 11th &&
        git notes copy HEAD^ HEAD &&
        git log -1 >actual &&
        test_cmp expect actual &&
@@ -864,8 +892,9 @@ test_expect_success 'prevent overwrite with "git notes copy"' '
 '
 
 test_expect_success 'allow overwrite with "git notes copy -f"' '
+       commit=$(git rev-parse HEAD) &&
        cat >expect <<-EOF &&
-               commit a446fff8777efdc6eb8f4b7c8a5ff699484df0d5
+               commit $commit
                Author: A U Thor <author@example.com>
                Date:   Thu Apr 7 15:23:13 2005 -0700
 
@@ -889,8 +918,10 @@ test_expect_success 'cannot copy note from object without notes' '
 '
 
 test_expect_success 'git notes copy --stdin' '
+       commit=$(git rev-parse HEAD) &&
+       parent=$(git rev-parse HEAD^) &&
        cat >expect <<-EOF &&
-               commit e871aa61182b1d95d0a6fb75445d891722863b6b
+               commit $commit
                Author: A U Thor <author@example.com>
                Date:   Thu Apr 7 15:25:13 2005 -0700
 
@@ -901,7 +932,7 @@ test_expect_success 'git notes copy --stdin' '
                ${indent}
                ${indent}yet another note
 
-               commit 65e263ded02ae4e8839bc151095113737579dc12
+               commit $parent
                Author: A U Thor <author@example.com>
                Date:   Thu Apr 7 15:24:13 2005 -0700
 
@@ -922,21 +953,23 @@ test_expect_success 'git notes copy --stdin' '
 '
 
 test_expect_success 'git notes copy --for-rewrite (unconfigured)' '
+       test_commit 14th &&
+       test_commit 15th &&
+       commit=$(git rev-parse HEAD) &&
+       parent=$(git rev-parse HEAD^) &&
        cat >expect <<-EOF &&
-               commit 4acf42e847e7fffbbf89ee365c20ac7caf40de89
+               commit $commit
                Author: A U Thor <author@example.com>
                Date:   Thu Apr 7 15:27:13 2005 -0700
 
                ${indent}15th
 
-               commit 07c85d77059393ed0154b8c96906547a59dfcddd
+               commit $parent
                Author: A U Thor <author@example.com>
                Date:   Thu Apr 7 15:26:13 2005 -0700
 
                ${indent}14th
        EOF
-       test_commit 14th &&
-       test_commit 15th &&
        (echo $(git rev-parse HEAD~3) $(git rev-parse HEAD^) &&
        echo $(git rev-parse HEAD~2) $(git rev-parse HEAD)) |
        git notes copy --for-rewrite=foo &&
@@ -945,8 +978,10 @@ test_expect_success 'git notes copy --for-rewrite (unconfigured)' '
 '
 
 test_expect_success 'git notes copy --for-rewrite (enabled)' '
+       commit=$(git rev-parse HEAD) &&
+       parent=$(git rev-parse HEAD^) &&
        cat >expect <<-EOF &&
-               commit 4acf42e847e7fffbbf89ee365c20ac7caf40de89
+               commit $commit
                Author: A U Thor <author@example.com>
                Date:   Thu Apr 7 15:27:13 2005 -0700
 
@@ -957,7 +992,7 @@ test_expect_success 'git notes copy --for-rewrite (enabled)' '
                ${indent}
                ${indent}yet another note
 
-               commit 07c85d77059393ed0154b8c96906547a59dfcddd
+               commit $parent
                Author: A U Thor <author@example.com>
                Date:   Thu Apr 7 15:26:13 2005 -0700
 
@@ -986,8 +1021,9 @@ test_expect_success 'git notes copy --for-rewrite (disabled)' '
 '
 
 test_expect_success 'git notes copy --for-rewrite (overwrite)' '
+       commit=$(git rev-parse HEAD) &&
        cat >expect <<-EOF &&
-               commit 4acf42e847e7fffbbf89ee365c20ac7caf40de89
+               commit $commit
                Author: A U Thor <author@example.com>
                Date:   Thu Apr 7 15:27:13 2005 -0700
 
@@ -1015,8 +1051,9 @@ test_expect_success 'git notes copy --for-rewrite (ignore)' '
 '
 
 test_expect_success 'git notes copy --for-rewrite (append)' '
+       commit=$(git rev-parse HEAD) &&
        cat >expect <<-EOF &&
-               commit 4acf42e847e7fffbbf89ee365c20ac7caf40de89
+               commit $commit
                Author: A U Thor <author@example.com>
                Date:   Thu Apr 7 15:27:13 2005 -0700
 
@@ -1037,8 +1074,9 @@ test_expect_success 'git notes copy --for-rewrite (append)' '
 '
 
 test_expect_success 'git notes copy --for-rewrite (append two to one)' '
+       commit=$(git rev-parse HEAD) &&
        cat >expect <<-EOF &&
-               commit 4acf42e847e7fffbbf89ee365c20ac7caf40de89
+               commit $commit
                Author: A U Thor <author@example.com>
                Date:   Thu Apr 7 15:27:13 2005 -0700
 
@@ -1075,8 +1113,9 @@ test_expect_success 'git notes copy --for-rewrite (append empty)' '
 '
 
 test_expect_success 'GIT_NOTES_REWRITE_MODE works' '
+       commit=$(git rev-parse HEAD) &&
        cat >expect <<-EOF &&
-               commit 4acf42e847e7fffbbf89ee365c20ac7caf40de89
+               commit $commit
                Author: A U Thor <author@example.com>
                Date:   Thu Apr 7 15:27:13 2005 -0700
 
@@ -1095,8 +1134,9 @@ test_expect_success 'GIT_NOTES_REWRITE_MODE works' '
 '
 
 test_expect_success 'GIT_NOTES_REWRITE_REF works' '
+       commit=$(git rev-parse HEAD) &&
        cat >expect <<-EOF &&
-               commit 4acf42e847e7fffbbf89ee365c20ac7caf40de89
+               commit $commit
                Author: A U Thor <author@example.com>
                Date:   Thu Apr 7 15:27:13 2005 -0700
 
index 54460be..831f83d 100755 (executable)
@@ -35,15 +35,10 @@ test_expect_success 'many notes created with git-notes triggers fanout' '
        git ls-tree -r --name-only refs/notes/commits |
        while read path
        do
-               case "$path" in
-               ??/??????????????????????????????????????)
-                       : true
-                       ;;
-               *)
+               echo $path | grep "^../[0-9a-f]*$" || {
                        echo "Invalid path \"$path\"" &&
-                       return 1
-                       ;;
-               esac
+                       return 1;
+               }
        done
 '
 
@@ -77,15 +72,10 @@ test_expect_success 'deleting most notes triggers fanout consolidation' '
        git ls-tree -r --name-only refs/notes/commits |
        while read path
        do
-               case "$path" in
-               ????????????????????????????????????????)
-                       : true
-                       ;;
-               *)
+               echo $path | grep -v "^../.*" || {
                        echo "Invalid path \"$path\"" &&
-                       return 1
-                       ;;
-               esac
+                       return 1;
+               }
        done
 '
 
index 6174808..8f4102f 100755 (executable)
@@ -11,23 +11,26 @@ test_expect_success 'setup: create a few commits with notes' '
        test_tick &&
        git commit -m 1st &&
        git notes add -m "Note #1" &&
+       first=$(git rev-parse HEAD) &&
        : > file2 &&
        git add file2 &&
        test_tick &&
        git commit -m 2nd &&
        git notes add -m "Note #2" &&
+       second=$(git rev-parse HEAD) &&
        : > file3 &&
        git add file3 &&
        test_tick &&
        git commit -m 3rd &&
-       COMMIT_FILE=.git/objects/5e/e1c35e83ea47cd3cc4f8cbee0568915fbbbd29 &&
+       third=$(git rev-parse HEAD) &&
+       COMMIT_FILE=$(echo $third | sed "s!^..!.git/objects/&/!") &&
        test -f $COMMIT_FILE &&
        test-tool chmtime =+0 $COMMIT_FILE &&
        git notes add -m "Note #3"
 '
 
 cat > expect <<END_OF_LOG
-commit 5ee1c35e83ea47cd3cc4f8cbee0568915fbbbd29
+commit $third
 Author: A U Thor <author@example.com>
 Date:   Thu Apr 7 15:15:13 2005 -0700
 
@@ -36,7 +39,7 @@ Date:   Thu Apr 7 15:15:13 2005 -0700
 Notes:
     Note #3
 
-commit 08341ad9e94faa089d60fd3f523affb25c6da189
+commit $second
 Author: A U Thor <author@example.com>
 Date:   Thu Apr 7 15:14:13 2005 -0700
 
@@ -45,7 +48,7 @@ Date:   Thu Apr 7 15:14:13 2005 -0700
 Notes:
     Note #2
 
-commit ab5f302035f2e7aaf04265f08b42034c23256e1f
+commit $first
 Author: A U Thor <author@example.com>
 Date:   Thu Apr 7 15:13:13 2005 -0700
 
@@ -70,16 +73,16 @@ test_expect_success 'remove some commits' '
 
 test_expect_success 'verify that commits are gone' '
 
-       test_must_fail git cat-file -p 5ee1c35e83ea47cd3cc4f8cbee0568915fbbbd29 &&
-       git cat-file -p 08341ad9e94faa089d60fd3f523affb25c6da189 &&
-       git cat-file -p ab5f302035f2e7aaf04265f08b42034c23256e1f
+       test_must_fail git cat-file -p $third &&
+       git cat-file -p $second &&
+       git cat-file -p $first
 '
 
 test_expect_success 'verify that notes are still present' '
 
-       git notes show 5ee1c35e83ea47cd3cc4f8cbee0568915fbbbd29 &&
-       git notes show 08341ad9e94faa089d60fd3f523affb25c6da189 &&
-       git notes show ab5f302035f2e7aaf04265f08b42034c23256e1f
+       git notes show $third &&
+       git notes show $second &&
+       git notes show $first
 '
 
 test_expect_success 'prune -n does not remove notes' '
@@ -90,13 +93,10 @@ test_expect_success 'prune -n does not remove notes' '
        test_cmp expect actual
 '
 
-cat > expect <<EOF
-5ee1c35e83ea47cd3cc4f8cbee0568915fbbbd29
-EOF
 
 test_expect_success 'prune -n lists prunable notes' '
 
-
+       echo $third >expect &&
        git notes prune -n > actual &&
        test_cmp expect actual
 '
@@ -109,9 +109,9 @@ test_expect_success 'prune notes' '
 
 test_expect_success 'verify that notes are gone' '
 
-       test_must_fail git notes show 5ee1c35e83ea47cd3cc4f8cbee0568915fbbbd29 &&
-       git notes show 08341ad9e94faa089d60fd3f523affb25c6da189 &&
-       git notes show ab5f302035f2e7aaf04265f08b42034c23256e1f
+       test_must_fail git notes show $third &&
+       git notes show $second &&
+       git notes show $first
 '
 
 test_expect_success 'remove some commits' '
@@ -121,21 +121,18 @@ test_expect_success 'remove some commits' '
        git gc --prune=now
 '
 
-cat > expect <<EOF
-08341ad9e94faa089d60fd3f523affb25c6da189
-EOF
-
 test_expect_success 'prune -v notes' '
 
+       echo $second >expect &&
        git notes prune -v > actual &&
        test_cmp expect actual
 '
 
 test_expect_success 'verify that notes are gone' '
 
-       test_must_fail git notes show 5ee1c35e83ea47cd3cc4f8cbee0568915fbbbd29 &&
-       test_must_fail git notes show 08341ad9e94faa089d60fd3f523affb25c6da189 &&
-       git notes show ab5f302035f2e7aaf04265f08b42034c23256e1f
+       test_must_fail git notes show $third &&
+       test_must_fail git notes show $second &&
+       git notes show $first
 '
 
 test_done
index 31114d0..3ea67d7 100755 (executable)
@@ -29,9 +29,6 @@ Initial setup:
 
 . "$TEST_DIRECTORY"/lib-rebase.sh
 
-# WARNING: Modifications to the initial repository can change the SHA ID used
-# in the expect2 file for the 'stop on conflicting pick' test.
-
 test_expect_success 'setup' '
        test_commit A file1 &&
        test_commit B file1 &&
@@ -231,25 +228,28 @@ test_expect_success 'exchange two commits' '
        set_fake_editor &&
        FAKE_LINES="2 1" git rebase -i HEAD~2 &&
        test H = $(git cat-file commit HEAD^ | sed -ne \$p) &&
-       test G = $(git cat-file commit HEAD | sed -ne \$p)
+       test G = $(git cat-file commit HEAD | sed -ne \$p) &&
+       blob1=$(git rev-parse --short HEAD^:file1) &&
+       blob2=$(git rev-parse --short HEAD:file1) &&
+       commit=$(git rev-parse --short HEAD)
 '
 
 test_expect_success 'stop on conflicting pick' '
-       cat >expect <<-\EOF &&
+       cat >expect <<-EOF &&
        diff --git a/file1 b/file1
-       index f70f10e..fd79235 100644
+       index $blob1..$blob2 100644
        --- a/file1
        +++ b/file1
        @@ -1 +1 @@
        -A
        +G
        EOF
-       cat >expect2 <<-\EOF &&
+       cat >expect2 <<-EOF &&
        <<<<<<< HEAD
        D
        =======
        G
-       >>>>>>> 5d18e54... G
+       >>>>>>> $commit... G
        EOF
        git tag new-branch1 &&
        set_fake_editor &&
@@ -1001,7 +1001,7 @@ test_expect_success 'rebase -i --root temporary sentinel commit' '
        git checkout B &&
        set_fake_editor &&
        test_must_fail env FAKE_LINES="2" git rebase -i --root &&
-       git cat-file commit HEAD | grep "^tree 4b825dc642cb" &&
+       git cat-file commit HEAD | grep "^tree $EMPTY_TREE" &&
        git rebase --abort
 '
 
@@ -1159,7 +1159,7 @@ test_expect_success 'rebase -i error on commits with \ in message' '
        test_expect_code 1 grep  "      emp" error
 '
 
-test_expect_success 'short SHA-1 setup' '
+test_expect_success SHA1 'short SHA-1 setup' '
        test_when_finished "git checkout master" &&
        git checkout --orphan collide &&
        git rm -rf . &&
@@ -1171,7 +1171,7 @@ test_expect_success 'short SHA-1 setup' '
        )
 '
 
-test_expect_success 'short SHA-1 collide' '
+test_expect_success SHA1 'short SHA-1 collide' '
        test_when_finished "reset_rebase && git checkout master" &&
        git checkout collide &&
        (
index fe6489f..cefed4e 100755 (executable)
@@ -37,20 +37,27 @@ test_expect_success 'setup' '
        test_commit A &&
        git checkout -b first &&
        test_commit B &&
+       b=$(git rev-parse --short HEAD) &&
        git checkout master &&
        test_commit C &&
+       c=$(git rev-parse --short HEAD) &&
        test_commit D &&
+       d=$(git rev-parse --short HEAD) &&
        git merge --no-commit B &&
        test_tick &&
        git commit -m E &&
        git tag -m E E &&
+       e=$(git rev-parse --short HEAD) &&
        git checkout -b second C &&
        test_commit F &&
+       f=$(git rev-parse --short HEAD) &&
        test_commit G &&
+       g=$(git rev-parse --short HEAD) &&
        git checkout master &&
        git merge --no-commit G &&
        test_tick &&
        git commit -m H &&
+       h=$(git rev-parse --short HEAD) &&
        git tag -m H H &&
        git checkout A &&
        test_commit conflicting-G G.t
@@ -93,24 +100,24 @@ test_expect_success 'create completely different structure' '
 '
 
 test_expect_success 'generate correct todo list' '
-       cat >expect <<-\EOF &&
+       cat >expect <<-EOF &&
        label onto
 
        reset onto
-       pick d9df450 B
+       pick $b B
        label E
 
        reset onto
-       pick 5dee784 C
+       pick $c C
        label branch-point
-       pick ca2c861 F
-       pick 088b00a G
+       pick $f F
+       pick $g G
        label H
 
        reset branch-point # C
-       pick 12bd07b D
-       merge -C 2051b56 E # E
-       merge -C 233d48a H # H
+       pick $d D
+       merge -C $e E # E
+       merge -C $h H # H
 
        EOF
 
index 127dd00..9d5adbc 100755 (executable)
@@ -16,7 +16,11 @@ test_expect_success setup '
        git add file1 &&
        test_tick &&
        git commit -m "second" &&
-       git tag second
+       git tag second &&
+       test_oid_cache <<-EOF
+       cp_ff sha1:1df192cd8bc58a2b275d842cede4d221ad9000d1
+       cp_ff sha256:e70d6b7fc064bddb516b8d512c9057094b96ce6ff08e12080acc4fe7f1d60a1d
+       EOF
 '
 
 test_expect_success 'cherry-pick using --ff fast forwards' '
@@ -102,7 +106,7 @@ test_expect_success 'cherry pick a root commit with --ff' '
        git add file2 &&
        git commit --amend -m "file2" &&
        git cherry-pick --ff first &&
-       test "$(git rev-parse --verify HEAD)" = "1df192cd8bc58a2b275d842cede4d221ad9000d1"
+       test "$(git rev-parse --verify HEAD)" = "$(test_oid cp_ff)"
 '
 
 test_expect_success 'cherry-pick --ff on unborn branch' '
index 66282a7..8c8cca5 100755 (executable)
@@ -240,12 +240,14 @@ test_expect_success 'refresh index before checking if it is up-to-date' '
 '
 
 test_expect_success 'choking "git rm" should not let it die with cruft' '
+       test_oid_init &&
        git reset -q --hard &&
        test_when_finished "rm -f .git/index.lock && git reset -q --hard" &&
        i=0 &&
+       hash=$(test_oid deadbeef) &&
        while test $i -lt 12000
        do
-               echo "100644 1234567890123456789012345678901234567890 0 some-file-$i"
+               echo "100644 $hash 0    some-file-$i"
                i=$(( $i + 1 ))
        done | git update-index --index-info &&
        git rm -n "some-file-*" | : &&
index 8eb4794..64dcc5e 100755 (executable)
@@ -23,6 +23,7 @@ check_verify_failure () {
 # first create a commit, so we have a valid object/type
 # for the tag.
 test_expect_success 'setup' '
+       test_oid_init &&
        echo Hello >A &&
        git update-index --add A &&
        git commit -m "Initial commit" &&
@@ -69,28 +70,28 @@ check_verify_failure '"object" line SHA1 check' '^error: char7: .*SHA1 hash$'
 #  4. type line label check
 
 cat >tag.sig <<EOF
-object 779e9b33986b1c2670fff52c5067603117b3e895
+object $head
 xxxx tag
 tag mytag
 tagger . <> 0 +0000
 
 EOF
 
-check_verify_failure '"type" line label check' '^error: char47: .*"\\ntype "$'
+check_verify_failure '"type" line label check' '^error: char.*: .*"\\ntype "$'
 
 ############################################################
 #  5. type line eol check
 
-echo "object 779e9b33986b1c2670fff52c5067603117b3e895" >tag.sig
+echo "object $head" >tag.sig
 printf "type tagsssssssssssssssssssssssssssssss" >>tag.sig
 
-check_verify_failure '"type" line eol check' '^error: char48: .*"\\n"$'
+check_verify_failure '"type" line eol check' '^error: char.*: .*"\\n"$'
 
 ############################################################
 #  6. tag line label check #1
 
 cat >tag.sig <<EOF
-object 779e9b33986b1c2670fff52c5067603117b3e895
+object $head
 type tag
 xxx mytag
 tagger . <> 0 +0000
@@ -98,37 +99,37 @@ tagger . <> 0 +0000
 EOF
 
 check_verify_failure '"tag" line label check #1' \
-       '^error: char57: no "tag " found$'
+       '^error: char.*: no "tag " found$'
 
 ############################################################
 #  7. tag line label check #2
 
 cat >tag.sig <<EOF
-object 779e9b33986b1c2670fff52c5067603117b3e895
+object $head
 type taggggggggggggggggggggggggggggggg
 tag
 EOF
 
 check_verify_failure '"tag" line label check #2' \
-       '^error: char87: no "tag " found$'
+       '^error: char.*: no "tag " found$'
 
 ############################################################
 #  8. type line type-name length check
 
 cat >tag.sig <<EOF
-object 779e9b33986b1c2670fff52c5067603117b3e895
+object $head
 type taggggggggggggggggggggggggggggggg
 tag mytag
 EOF
 
 check_verify_failure '"type" line type-name length check' \
-       '^error: char53: type too long$'
+       '^error: char.*: type too long$'
 
 ############################################################
 #  9. verify object (SHA1/type) check
 
 cat >tag.sig <<EOF
-object 779e9b33986b1c2670fff52c5067603117b3e895
+object $(test_oid deadbeef)
 type tagggg
 tag mytag
 tagger . <> 0 +0000
@@ -150,7 +151,7 @@ tagger . <> 0 +0000
 EOF
 
 check_verify_failure 'verify tag-name check' \
-       '^error: char67: could not verify tag name$'
+       '^error: char.*: could not verify tag name$'
 
 ############################################################
 # 11. tagger line label check #1
@@ -164,7 +165,7 @@ This is filler
 EOF
 
 check_verify_failure '"tagger" line label check #1' \
-       '^error: char70: could not find "tagger "$'
+       '^error: char.*: could not find "tagger "$'
 
 ############################################################
 # 12. tagger line label check #2
@@ -179,7 +180,7 @@ This is filler
 EOF
 
 check_verify_failure '"tagger" line label check #2' \
-       '^error: char70: could not find "tagger "$'
+       '^error: char.*: could not find "tagger "$'
 
 ############################################################
 # 13. disallow missing tag author name
@@ -194,7 +195,7 @@ This is filler
 EOF
 
 check_verify_failure 'disallow missing tag author name' \
-       '^error: char77: missing tagger name$'
+       '^error: char.*: missing tagger name$'
 
 ############################################################
 # 14. disallow missing tag author name
@@ -209,7 +210,7 @@ tagger T A Gger <
 EOF
 
 check_verify_failure 'disallow malformed tagger' \
-       '^error: char77: malformed tagger field$'
+       '^error: char.*: malformed tagger field$'
 
 ############################################################
 # 15. allow empty tag email
@@ -238,7 +239,7 @@ tagger T A Gger <tag ger@example.com> 0 +0000
 EOF
 
 check_verify_failure 'disallow spaces in tag email' \
-       '^error: char77: malformed tagger field$'
+       '^error: char.*: malformed tagger field$'
 
 ############################################################
 # 17. disallow missing tag timestamp
@@ -252,7 +253,7 @@ tagger T A Gger <tagger@example.com>__
 EOF
 
 check_verify_failure 'disallow missing tag timestamp' \
-       '^error: char107: missing tag timestamp$'
+       '^error: char.*: missing tag timestamp$'
 
 ############################################################
 # 18. detect invalid tag timestamp1
@@ -266,7 +267,7 @@ tagger T A Gger <tagger@example.com> Tue Mar 25 15:47:44 2008
 EOF
 
 check_verify_failure 'detect invalid tag timestamp1' \
-       '^error: char107: missing tag timestamp$'
+       '^error: char.*: missing tag timestamp$'
 
 ############################################################
 # 19. detect invalid tag timestamp2
@@ -280,7 +281,7 @@ tagger T A Gger <tagger@example.com> 2008-03-31T12:20:15-0500
 EOF
 
 check_verify_failure 'detect invalid tag timestamp2' \
-       '^error: char111: malformed tag timestamp$'
+       '^error: char.*: malformed tag timestamp$'
 
 ############################################################
 # 20. detect invalid tag timezone1
@@ -294,7 +295,7 @@ tagger T A Gger <tagger@example.com> 1206478233 GMT
 EOF
 
 check_verify_failure 'detect invalid tag timezone1' \
-       '^error: char118: malformed tag timezone$'
+       '^error: char.*: malformed tag timezone$'
 
 ############################################################
 # 21. detect invalid tag timezone2
@@ -308,7 +309,7 @@ tagger T A Gger <tagger@example.com> 1206478233 +  30
 EOF
 
 check_verify_failure 'detect invalid tag timezone2' \
-       '^error: char118: malformed tag timezone$'
+       '^error: char.*: malformed tag timezone$'
 
 ############################################################
 # 22. detect invalid tag timezone3
@@ -322,7 +323,7 @@ tagger T A Gger <tagger@example.com> 1206478233 -1430
 EOF
 
 check_verify_failure 'detect invalid tag timezone3' \
-       '^error: char118: malformed tag timezone$'
+       '^error: char.*: malformed tag timezone$'
 
 ############################################################
 # 23. detect invalid header entry
@@ -337,7 +338,7 @@ this line should not be here
 EOF
 
 check_verify_failure 'detect invalid header entry' \
-       '^error: char124: trailing garbage in tag header$'
+       '^error: char.*: trailing garbage in tag header$'
 
 ############################################################
 # 24. create valid tag
index b8e3378..820b350 100755 (executable)
@@ -7,6 +7,18 @@ test_description='Test git stash'
 
 . ./test-lib.sh
 
+diff_cmp () {
+       for i in "$1" "$2"
+       do
+               sed -e 's/^index 0000000\.\.[0-9a-f]*/index 0000000..1234567/' \
+               -e 's/^index [0-9a-f]*\.\.[0-9a-f]*/index 1234567..89abcde/' \
+               -e 's/^index [0-9a-f]*,[0-9a-f]*\.\.[0-9a-f]*/index 1234567,7654321..89abcde/' \
+               "$i" >"$i.compare" || return 1
+       done &&
+       test_cmp "$1.compare" "$2.compare" &&
+       rm -f "$1.compare" "$2.compare"
+}
+
 test_expect_success 'stash some dirty working directory' '
        echo 1 >file &&
        git add file &&
@@ -36,7 +48,7 @@ EOF
 test_expect_success 'parents of stash' '
        test $(git rev-parse stash^) = $(git rev-parse HEAD) &&
        git diff stash^2..stash >output &&
-       test_cmp expect output
+       diff_cmp expect output
 '
 
 test_expect_success 'applying bogus stash does nothing' '
@@ -210,13 +222,13 @@ test_expect_success 'stash branch' '
        test refs/heads/stashbranch = $(git symbolic-ref HEAD) &&
        test $(git rev-parse HEAD) = $(git rev-parse master^) &&
        git diff --cached >output &&
-       test_cmp expect output &&
+       diff_cmp expect output &&
        git diff >output &&
-       test_cmp expect1 output &&
+       diff_cmp expect1 output &&
        git add file &&
        git commit -m alternate\ second &&
        git diff master..stashbranch >output &&
-       test_cmp output expect2 &&
+       diff_cmp output expect2 &&
        test 0 = $(git stash list | wc -l)
 '
 
@@ -577,7 +589,7 @@ test_expect_success 'stash show -p - stashes on stack, stash-like argument' '
        +bar
        EOF
        git stash show -p ${STASH_ID} >actual &&
-       test_cmp expected actual
+       diff_cmp expected actual
 '
 
 test_expect_success 'stash show - no stashes on stack, stash-like argument' '
@@ -609,7 +621,7 @@ test_expect_success 'stash show -p - no stashes on stack, stash-like argument' '
        +foo
        EOF
        git stash show -p ${STASH_ID} >actual &&
-       test_cmp expected actual
+       diff_cmp expected actual
 '
 
 test_expect_success 'stash show --patience shows diff' '
@@ -627,7 +639,7 @@ test_expect_success 'stash show --patience shows diff' '
        +foo
        EOF
        git stash show --patience ${STASH_ID} >actual &&
-       test_cmp expected actual
+       diff_cmp expected actual
 '
 
 test_expect_success 'drop: fail early if specified stash is not a stash ref' '
@@ -791,7 +803,7 @@ test_expect_success 'stash where working directory contains "HEAD" file' '
        git diff-index --cached --quiet HEAD &&
        test "$(git rev-parse stash^)" = "$(git rev-parse HEAD)" &&
        git diff stash^..stash >output &&
-       test_cmp expect output
+       diff_cmp expect output
 '
 
 test_expect_success 'store called with invalid commit' '
@@ -847,7 +859,7 @@ test_expect_success 'stash list implies --first-parent -m' '
        +working
        EOF
        git stash list --format=%gd -p >actual &&
-       test_cmp expect actual
+       diff_cmp expect actual
 '
 
 test_expect_success 'stash list --cc shows combined diff' '
@@ -864,7 +876,7 @@ test_expect_success 'stash list --cc shows combined diff' '
        ++working
        EOF
        git stash list --format=%gd -p --cc >actual &&
-       test_cmp expect actual
+       diff_cmp expect actual
 '
 
 test_expect_success 'stash is not confused by partial renames' '
index 8de36b7..e5116a7 100755 (executable)
@@ -78,7 +78,7 @@ test_expect_success 'git diff-files --no-patch --patch shows the patch' '
 
 test_expect_success 'git diff-files --no-patch --patch-with-raw shows the patch and raw data' '
        git diff-files --no-patch --patch-with-raw >actual &&
-       grep -q "^:100644 100755 .* 0000000000000000000000000000000000000000 M  path0\$" actual &&
+       grep -q "^:100644 100755 .* $ZERO_OID M path0\$" actual &&
        tail -n +4 actual >actual-patch &&
        compare_diff_patch expected actual-patch
 '
index 3a6c21e..cbcdd10 100755 (executable)
@@ -7,123 +7,272 @@ test_description='Test diff raw-output.
 
 '
 . ./test-lib.sh
+
 . "$TEST_DIRECTORY"/lib-read-tree-m-3way.sh
 
-cat >.test-plain-OA <<\EOF
-:000000 100644 0000000000000000000000000000000000000000 ccba72ad3888a3520b39efcf780b9ee64167535d A     AA
-:000000 100644 0000000000000000000000000000000000000000 7e426fb079479fd67f6d81f984e4ec649a44bc25 A     AN
-:100644 000000 bcc68ef997017466d5c9094bcf7692295f588c9a 0000000000000000000000000000000000000000 D     DD
-:000000 040000 0000000000000000000000000000000000000000 6d50f65d3bdab91c63444294d38f08aeff328e42 A     DF
-:100644 000000 141c1f1642328e4bc46a7d801a71da392e66791e 0000000000000000000000000000000000000000 D     DM
-:100644 000000 35abde1506ddf806572ff4d407bd06885d0f8ee9 0000000000000000000000000000000000000000 D     DN
-:000000 100644 0000000000000000000000000000000000000000 1d41122ebdd7a640f29d3c9cc4f9d70094374762 A     LL
-:100644 100644 03f24c8c4700babccfd28b654e7e8eac402ad6cd 103d9f89b50b9aad03054b579be5e7aa665f2d57 M     MD
-:100644 100644 b258508afb7ceb449981bd9d63d2d3e971bf8d34 b431b272d829ff3aa4d1a5085f4394ab4d3305b6 M     MM
-:100644 100644 bd084b0c27c7b6cc34f11d6d0509a29be3caf970 a716d58de4a570e0038f5c307bd8db34daea021f M     MN
-:100644 100644 40c959f984c8b89a2b02520d17f00d717f024397 2ac547ae9614a00d1b28275de608131f7a0e259f M     SS
-:100644 100644 4ac13458899ab908ef3b1128fa378daefc88d356 4c86f9a85fbc5e6804ee2e17a797538fbe785bca M     TT
-:040000 040000 7d670fdcdb9929f6c7dac196ff78689cd1c566a1 5e5f22072bb39f6e12cf663a57cb634c76eefb49 M     Z
+test_oid_init
+
+test_oid_cache <<\EOF
+aa_1 sha1:ccba72ad3888a3520b39efcf780b9ee64167535d
+aa_1 sha256:9febfbf18197819b2735c45291f138525d2476d59470f98239647544586ba403
+
+aa_2 sha1:6aa2b5335b16431a0ef71e5c0a28be69183cf6a2
+aa_2 sha256:6eaa3437de83f145a4aaa6ba355303075ade547b128ec6a2cd00a81ff7ce7a56
+
+an_1 sha1:7e426fb079479fd67f6d81f984e4ec649a44bc25
+an_1 sha256:8f92a0bec99e399a38e3bd0e1bf19fbf121e0160efb29b857df79d439f1c4536
+
+dd_1 sha1:bcc68ef997017466d5c9094bcf7692295f588c9a
+dd_1 sha256:07e17428b00639b85485d2b01083d219e2f3e3ba8579e9ca44e9cc8dd554d952
+
+df_1 sha1:6d50f65d3bdab91c63444294d38f08aeff328e42
+df_1 sha256:e367cecc27e9bf5451b1c65828cb21938d36a5f8e39c1b03ad6509cc36bb8e9d
+
+df_2 sha1:71420ab81e254145d26d6fc0cddee64c1acd4787
+df_2 sha256:0f0a86d10347ff6921d03a3c954679f3f1d14fa3d5cd82f57b32c09755f3a47d
+
+dfd1 sha1:68a6d8b91da11045cf4aa3a5ab9f2a781c701249
+dfd1 sha256:f3bd3265b02b6978ce86490d8ad026c573639c974b3de1d9faf30d8d5a77d3d5
+
+dm_1 sha1:141c1f1642328e4bc46a7d801a71da392e66791e
+dm_1 sha256:c89f8656e7b94e21ee5fbaf0e2149bbf783c51edbe2ce110349cac13059ee7ed
+
+dm_2 sha1:3c4d8de5fbad08572bab8e10eef8dbb264cf0231
+dm_2 sha256:83a572e37e0c94086294dae2cecc43d9131afd6f6c906e495c78972230b54988
+
+dn_1 sha1:35abde1506ddf806572ff4d407bd06885d0f8ee9
+dn_1 sha256:775d5852582070e620be63327bfa515fab8f71c7ac3e4f0c3cd6267b4377ba28
+
+ll_2 sha1:1d41122ebdd7a640f29d3c9cc4f9d70094374762
+ll_2 sha256:7917b4948a883cfed0a77d3d5a625dc8577d6ddcc3c6c3bbc56c4d4226a2246d
+
+md_1 sha1:03f24c8c4700babccfd28b654e7e8eac402ad6cd
+md_1 sha256:fc9f30369b978595ad685ba11ca9a17de0af16d79cd4b629975f4f1590033902
+
+md_2 sha1:103d9f89b50b9aad03054b579be5e7aa665f2d57
+md_2 sha256:fc78ec75275628762fe520479a6b2398dec295ce7aabcb1d15e5963c7b4e9317
+
+mm_1 sha1:b258508afb7ceb449981bd9d63d2d3e971bf8d34
+mm_1 sha256:a4b7847d228e900e3000285e240c20fd96f9dd41ce1445305f6eada126d4a04a
+
+mm_2 sha1:b431b272d829ff3aa4d1a5085f4394ab4d3305b6
+mm_2 sha256:3f8b83ea36aacf689bcf1a1290a9a8ed341564d32682ea6f76fea9a979186782
+
+mm_3 sha1:19989d4559aae417fedee240ccf2ba315ea4dc2b
+mm_3 sha256:71b3bfc5747ac033fff9ea0ab39ee453a3af2969890e75d6ef547b87544e2681
+
+mn_1 sha1:bd084b0c27c7b6cc34f11d6d0509a29be3caf970
+mn_1 sha256:47a67450583d7a329eb01a7c4ba644945af72c0ed2c7c95eb5a00d6e46d4d483
+
+mn_2 sha1:a716d58de4a570e0038f5c307bd8db34daea021f
+mn_2 sha256:f95104c1ebe27acb84bac25a7be98c71f6b8d3054b21f357a5be0c524ad97e08
+
+nm_1 sha1:c8f25781e8f1792e3e40b74225e20553041b5226
+nm_1 sha256:09baddc7afaa62e62e152c23c9c3ab94bf15a3894031e227e9be7fe68e1f4e49
+
+nm_2 sha1:cdb9a8c3da571502ac30225e9c17beccb8387983
+nm_2 sha256:58b5227956ac2d2a08d0efa513c0ae37430948b16791ea3869a1308dbf05536d
+
+na_1 sha1:15885881ea69115351c09b38371f0348a3fb8c67
+na_1 sha256:18e4fdd1670cd7968ee23d35bfd29e5418d56fb190c840094c1c57ceee0aad8f
+
+nd_1 sha1:a4e179e4291e5536a5e1c82e091052772d2c5a93
+nd_1 sha256:07dac9b01d00956ea0c65bd993d7de4864aeef2ed3cbb1255d9f1d949fcd6df6
+
+ss_1 sha1:40c959f984c8b89a2b02520d17f00d717f024397
+ss_1 sha256:50fc1b5df74d9910db2f9270993484235f15b69b75b01bcfb53e059289d14af9
+
+ss_2 sha1:2ac547ae9614a00d1b28275de608131f7a0e259f
+ss_2 sha256:a90f02e6044f1497d13db587d22ab12f90150a7d1e084afcf96065fab35ae2bc
+
+tt_1 sha1:4ac13458899ab908ef3b1128fa378daefc88d356
+tt_1 sha256:c53113c7dd5060e86b5b251428bd058f6726f66273c6a24bff1c61a04f498dd3
+
+tt_2 sha1:4c86f9a85fbc5e6804ee2e17a797538fbe785bca
+tt_2 sha256:0775f2a296129a7cf2862b46bc0e88c14d593f2773a3e3fb1c5193db6f5a7e77
+
+tt_3 sha1:c4e4a12231b9fa79a0053cb6077fcb21bb5b135a
+tt_3 sha256:47860f93cdd211f96443e0560f21c57ab6c2f4b0ac27ff03651a352e53fe8484
+
+z__1 sha1:7d670fdcdb9929f6c7dac196ff78689cd1c566a1
+z__1 sha256:44d0f37aff5e51cfcfdd1134c93a6419bcca7b9964f792ffcd5f9b4fcba1ee63
+
+z__2 sha1:5e5f22072bb39f6e12cf663a57cb634c76eefb49
+z__2 sha256:d29de162113190fed104eb5f010820cef4e315f89b9326e8497f7219fb737894
+
+z__3 sha1:1ba523955d5160681af65cb776411f574c1e8155
+z__3 sha256:07422d772b07794ab4369a5648e617719f89c2d2212cbeab05d97214b6471636
+
+zaa1 sha1:8acb8e9750e3f644bf323fcf3d338849db106c77
+zaa1 sha256:e79b029282c8abec2d9f3f7faceaf2a1405e02d1f368e66450ae66cf5b68d1f4
+
+zaa2 sha1:6c0b99286d0bce551ac4a7b3dff8b706edff3715
+zaa2 sha256:c82bd78c3e69ea1796e6b1a7a3ba45bb106c50e819296475b862123d3f5cc5a0
+
+zan1 sha1:087494262084cefee7ed484d20c8dc0580791272
+zan1 sha256:4b159eb3804d05599023dd074f771d06d02870f4ab24a7165add8ac3d703b8d3
+
+zdd1 sha1:879007efae624d2b1307214b24a956f0a8d686a8
+zdd1 sha256:eecfdd4d8092dd0363fb6d4548b54c6afc8982c3ed9b34e393f1d6a921d8eaa3
+
+zdm1 sha1:9b541b2275c06e3a7b13f28badf5294e2ae63df4
+zdm1 sha256:ab136e88e19a843c4bf7713d2090d5a2186ba16a6a80dacc12eeddd256a8e556
+
+zdm2 sha1:d77371d15817fcaa57eeec27f770c505ba974ec1
+zdm2 sha256:1c1a5f57363f46a15d95ce8527b3c2c158d88d16853b4acbf81bd20fd2c89a46
+
+zdn1 sha1:beb5d38c55283d280685ea21a0e50cfcc0ca064a
+zdn1 sha256:0f0eca66183617b0aa5ad74b256540329f841470922ca6760263c996d825eb18
+
+zmd1 sha1:d41fda41b7ec4de46b43cb7ea42a45001ae393d5
+zmd1 sha256:1ed32d481852eddf31a0ce12652a0ad14bf5b7a842667b5dbb0b50f35bf1c80a
+
+zmd2 sha1:a79ac3be9377639e1c7d1edf1ae1b3a5f0ccd8a9
+zmd2 sha256:b238da211b404f8917df2d9c6f7030535e904b2186131007a3c292ec6902f933
+
+zmm1 sha1:4ca22bae2527d3d9e1676498a0fba3b355bd1278
+zmm1 sha256:072b1d85b5f34fabc99dfa46008c5418df68302d3e317430006f49b32d244226
+
+zmm2 sha1:61422ba9c2c873416061a88cd40a59a35b576474
+zmm2 sha256:81dd5d2b3c5cda16fef552256aed4e2ea0802a8450a08f308a92142112ff6dda
+
+zmm3 sha1:697aad7715a1e7306ca76290a3dd4208fbaeddfa
+zmm3 sha256:8b10fab49e9be3414aa5e9a93d0e46f9569053440138a7c19a5eb5536d8e95bf
+
+zmn1 sha1:b16d7b25b869f2beb124efa53467d8a1550ad694
+zmn1 sha256:609e4f75d1295e844c826feeba213acb0b6cfc609adfe8ff705b19e3829ae3e9
+
+zmn2 sha1:a5c544c21cfcb07eb80a4d89a5b7d1570002edfd
+zmn2 sha256:d6d03edf2dc1a3b267a8205de5f41a2ff4b03def8c7ae02052b543fb09d589fc
+
+zna1 sha1:d12979c22fff69c59ca9409e7a8fe3ee25eaee80
+zna1 sha256:b37b80e789e8ea32aa323f004628f02013f632124b0282c7fe00a127d3c64c3c
+
+znd1 sha1:a18393c636b98e9bd7296b8b437ea4992b72440c
+znd1 sha256:af92a22eee8c38410a0c9d2b5135a10aeb052cbc7cf675541ed9a67bfcaf7cf9
+
+znm1 sha1:3fdbe17fd013303a2e981e1ca1c6cd6e72789087
+znm1 sha256:f75aeaa0c11e76918e381c105f0752932c6150e941fec565d24fa31098a13dc1
+
+znm2 sha1:7e09d6a3a14bd630913e8c75693cea32157b606d
+znm2 sha256:938d73cfbaa1c902a84fb5b3afd9736aa0590367fb9bd59c6c4d072ce70fcd6d
+EOF
+
+cat >.test-plain-OA <<EOF
+:000000 100644 $(test_oid zero) $(test_oid aa_1) A     AA
+:000000 100644 $(test_oid zero) $(test_oid an_1) A     AN
+:100644 000000 $(test_oid dd_1) $(test_oid zero) D     DD
+:000000 040000 $(test_oid zero) $(test_oid df_1) A     DF
+:100644 000000 $(test_oid dm_1) $(test_oid zero) D     DM
+:100644 000000 $(test_oid dn_1) $(test_oid zero) D     DN
+:000000 100644 $(test_oid zero) $(test_oid ll_2) A     LL
+:100644 100644 $(test_oid md_1) $(test_oid md_2) M     MD
+:100644 100644 $(test_oid mm_1) $(test_oid mm_2) M     MM
+:100644 100644 $(test_oid mn_1) $(test_oid mn_2) M     MN
+:100644 100644 $(test_oid ss_1) $(test_oid ss_2) M     SS
+:100644 100644 $(test_oid tt_1) $(test_oid tt_2) M     TT
+:040000 040000 $(test_oid z__1) $(test_oid z__2) M     Z
 EOF
 
-cat >.test-recursive-OA <<\EOF
-:000000 100644 0000000000000000000000000000000000000000 ccba72ad3888a3520b39efcf780b9ee64167535d A     AA
-:000000 100644 0000000000000000000000000000000000000000 7e426fb079479fd67f6d81f984e4ec649a44bc25 A     AN
-:100644 000000 bcc68ef997017466d5c9094bcf7692295f588c9a 0000000000000000000000000000000000000000 D     DD
-:000000 100644 0000000000000000000000000000000000000000 68a6d8b91da11045cf4aa3a5ab9f2a781c701249 A     DF/DF
-:100644 000000 141c1f1642328e4bc46a7d801a71da392e66791e 0000000000000000000000000000000000000000 D     DM
-:100644 000000 35abde1506ddf806572ff4d407bd06885d0f8ee9 0000000000000000000000000000000000000000 D     DN
-:000000 100644 0000000000000000000000000000000000000000 1d41122ebdd7a640f29d3c9cc4f9d70094374762 A     LL
-:100644 100644 03f24c8c4700babccfd28b654e7e8eac402ad6cd 103d9f89b50b9aad03054b579be5e7aa665f2d57 M     MD
-:100644 100644 b258508afb7ceb449981bd9d63d2d3e971bf8d34 b431b272d829ff3aa4d1a5085f4394ab4d3305b6 M     MM
-:100644 100644 bd084b0c27c7b6cc34f11d6d0509a29be3caf970 a716d58de4a570e0038f5c307bd8db34daea021f M     MN
-:100644 100644 40c959f984c8b89a2b02520d17f00d717f024397 2ac547ae9614a00d1b28275de608131f7a0e259f M     SS
-:100644 100644 4ac13458899ab908ef3b1128fa378daefc88d356 4c86f9a85fbc5e6804ee2e17a797538fbe785bca M     TT
-:000000 100644 0000000000000000000000000000000000000000 8acb8e9750e3f644bf323fcf3d338849db106c77 A     Z/AA
-:000000 100644 0000000000000000000000000000000000000000 087494262084cefee7ed484d20c8dc0580791272 A     Z/AN
-:100644 000000 879007efae624d2b1307214b24a956f0a8d686a8 0000000000000000000000000000000000000000 D     Z/DD
-:100644 000000 9b541b2275c06e3a7b13f28badf5294e2ae63df4 0000000000000000000000000000000000000000 D     Z/DM
-:100644 000000 beb5d38c55283d280685ea21a0e50cfcc0ca064a 0000000000000000000000000000000000000000 D     Z/DN
-:100644 100644 d41fda41b7ec4de46b43cb7ea42a45001ae393d5 a79ac3be9377639e1c7d1edf1ae1b3a5f0ccd8a9 M     Z/MD
-:100644 100644 4ca22bae2527d3d9e1676498a0fba3b355bd1278 61422ba9c2c873416061a88cd40a59a35b576474 M     Z/MM
-:100644 100644 b16d7b25b869f2beb124efa53467d8a1550ad694 a5c544c21cfcb07eb80a4d89a5b7d1570002edfd M     Z/MN
+cat >.test-recursive-OA <<EOF
+:000000 100644 $(test_oid zero) $(test_oid aa_1) A     AA
+:000000 100644 $(test_oid zero) $(test_oid an_1) A     AN
+:100644 000000 $(test_oid dd_1) $(test_oid zero) D     DD
+:000000 100644 $(test_oid zero) $(test_oid dfd1) A     DF/DF
+:100644 000000 $(test_oid dm_1) $(test_oid zero) D     DM
+:100644 000000 $(test_oid dn_1) $(test_oid zero) D     DN
+:000000 100644 $(test_oid zero) $(test_oid ll_2) A     LL
+:100644 100644 $(test_oid md_1) $(test_oid md_2) M     MD
+:100644 100644 $(test_oid mm_1) $(test_oid mm_2) M     MM
+:100644 100644 $(test_oid mn_1) $(test_oid mn_2) M     MN
+:100644 100644 $(test_oid ss_1) $(test_oid ss_2) M     SS
+:100644 100644 $(test_oid tt_1) $(test_oid tt_2) M     TT
+:000000 100644 $(test_oid zero) $(test_oid zaa1) A     Z/AA
+:000000 100644 $(test_oid zero) $(test_oid zan1) A     Z/AN
+:100644 000000 $(test_oid zdd1) $(test_oid zero) D     Z/DD
+:100644 000000 $(test_oid zdm1) $(test_oid zero) D     Z/DM
+:100644 000000 $(test_oid zdn1) $(test_oid zero) D     Z/DN
+:100644 100644 $(test_oid zmd1) $(test_oid zmd2) M     Z/MD
+:100644 100644 $(test_oid zmm1) $(test_oid zmm2) M     Z/MM
+:100644 100644 $(test_oid zmn1) $(test_oid zmn2) M     Z/MN
 EOF
-cat >.test-plain-OB <<\EOF
-:000000 100644 0000000000000000000000000000000000000000 6aa2b5335b16431a0ef71e5c0a28be69183cf6a2 A     AA
-:100644 000000 bcc68ef997017466d5c9094bcf7692295f588c9a 0000000000000000000000000000000000000000 D     DD
-:000000 100644 0000000000000000000000000000000000000000 71420ab81e254145d26d6fc0cddee64c1acd4787 A     DF
-:100644 100644 141c1f1642328e4bc46a7d801a71da392e66791e 3c4d8de5fbad08572bab8e10eef8dbb264cf0231 M     DM
-:000000 100644 0000000000000000000000000000000000000000 1d41122ebdd7a640f29d3c9cc4f9d70094374762 A     LL
-:100644 000000 03f24c8c4700babccfd28b654e7e8eac402ad6cd 0000000000000000000000000000000000000000 D     MD
-:100644 100644 b258508afb7ceb449981bd9d63d2d3e971bf8d34 19989d4559aae417fedee240ccf2ba315ea4dc2b M     MM
-:000000 100644 0000000000000000000000000000000000000000 15885881ea69115351c09b38371f0348a3fb8c67 A     NA
-:100644 000000 a4e179e4291e5536a5e1c82e091052772d2c5a93 0000000000000000000000000000000000000000 D     ND
-:100644 100644 c8f25781e8f1792e3e40b74225e20553041b5226 cdb9a8c3da571502ac30225e9c17beccb8387983 M     NM
-:100644 100644 40c959f984c8b89a2b02520d17f00d717f024397 2ac547ae9614a00d1b28275de608131f7a0e259f M     SS
-:100644 100644 4ac13458899ab908ef3b1128fa378daefc88d356 c4e4a12231b9fa79a0053cb6077fcb21bb5b135a M     TT
-:040000 040000 7d670fdcdb9929f6c7dac196ff78689cd1c566a1 1ba523955d5160681af65cb776411f574c1e8155 M     Z
+cat >.test-plain-OB <<EOF
+:000000 100644 $(test_oid zero) $(test_oid aa_2) A     AA
+:100644 000000 $(test_oid dd_1) $(test_oid zero) D     DD
+:000000 100644 $(test_oid zero) $(test_oid df_2) A     DF
+:100644 100644 $(test_oid dm_1) $(test_oid dm_2) M     DM
+:000000 100644 $(test_oid zero) $(test_oid ll_2) A     LL
+:100644 000000 $(test_oid md_1) $(test_oid zero) D     MD
+:100644 100644 $(test_oid mm_1) $(test_oid mm_3) M     MM
+:000000 100644 $(test_oid zero) $(test_oid na_1) A     NA
+:100644 000000 $(test_oid nd_1) $(test_oid zero) D     ND
+:100644 100644 $(test_oid nm_1) $(test_oid nm_2) M     NM
+:100644 100644 $(test_oid ss_1) $(test_oid ss_2) M     SS
+:100644 100644 $(test_oid tt_1) $(test_oid tt_3) M     TT
+:040000 040000 $(test_oid z__1) $(test_oid z__3) M     Z
 EOF
-cat >.test-recursive-OB <<\EOF
-:000000 100644 0000000000000000000000000000000000000000 6aa2b5335b16431a0ef71e5c0a28be69183cf6a2 A     AA
-:100644 000000 bcc68ef997017466d5c9094bcf7692295f588c9a 0000000000000000000000000000000000000000 D     DD
-:000000 100644 0000000000000000000000000000000000000000 71420ab81e254145d26d6fc0cddee64c1acd4787 A     DF
-:100644 100644 141c1f1642328e4bc46a7d801a71da392e66791e 3c4d8de5fbad08572bab8e10eef8dbb264cf0231 M     DM
-:000000 100644 0000000000000000000000000000000000000000 1d41122ebdd7a640f29d3c9cc4f9d70094374762 A     LL
-:100644 000000 03f24c8c4700babccfd28b654e7e8eac402ad6cd 0000000000000000000000000000000000000000 D     MD
-:100644 100644 b258508afb7ceb449981bd9d63d2d3e971bf8d34 19989d4559aae417fedee240ccf2ba315ea4dc2b M     MM
-:000000 100644 0000000000000000000000000000000000000000 15885881ea69115351c09b38371f0348a3fb8c67 A     NA
-:100644 000000 a4e179e4291e5536a5e1c82e091052772d2c5a93 0000000000000000000000000000000000000000 D     ND
-:100644 100644 c8f25781e8f1792e3e40b74225e20553041b5226 cdb9a8c3da571502ac30225e9c17beccb8387983 M     NM
-:100644 100644 40c959f984c8b89a2b02520d17f00d717f024397 2ac547ae9614a00d1b28275de608131f7a0e259f M     SS
-:100644 100644 4ac13458899ab908ef3b1128fa378daefc88d356 c4e4a12231b9fa79a0053cb6077fcb21bb5b135a M     TT
-:000000 100644 0000000000000000000000000000000000000000 6c0b99286d0bce551ac4a7b3dff8b706edff3715 A     Z/AA
-:100644 000000 879007efae624d2b1307214b24a956f0a8d686a8 0000000000000000000000000000000000000000 D     Z/DD
-:100644 100644 9b541b2275c06e3a7b13f28badf5294e2ae63df4 d77371d15817fcaa57eeec27f770c505ba974ec1 M     Z/DM
-:100644 000000 d41fda41b7ec4de46b43cb7ea42a45001ae393d5 0000000000000000000000000000000000000000 D     Z/MD
-:100644 100644 4ca22bae2527d3d9e1676498a0fba3b355bd1278 697aad7715a1e7306ca76290a3dd4208fbaeddfa M     Z/MM
-:000000 100644 0000000000000000000000000000000000000000 d12979c22fff69c59ca9409e7a8fe3ee25eaee80 A     Z/NA
-:100644 000000 a18393c636b98e9bd7296b8b437ea4992b72440c 0000000000000000000000000000000000000000 D     Z/ND
-:100644 100644 3fdbe17fd013303a2e981e1ca1c6cd6e72789087 7e09d6a3a14bd630913e8c75693cea32157b606d M     Z/NM
+cat >.test-recursive-OB <<EOF
+:000000 100644 $(test_oid zero) $(test_oid aa_2) A     AA
+:100644 000000 $(test_oid dd_1) $(test_oid zero) D     DD
+:000000 100644 $(test_oid zero) $(test_oid df_2) A     DF
+:100644 100644 $(test_oid dm_1) $(test_oid dm_2) M     DM
+:000000 100644 $(test_oid zero) $(test_oid ll_2) A     LL
+:100644 000000 $(test_oid md_1) $(test_oid zero) D     MD
+:100644 100644 $(test_oid mm_1) $(test_oid mm_3) M     MM
+:000000 100644 $(test_oid zero) $(test_oid na_1) A     NA
+:100644 000000 $(test_oid nd_1) $(test_oid zero) D     ND
+:100644 100644 $(test_oid nm_1) $(test_oid nm_2) M     NM
+:100644 100644 $(test_oid ss_1) $(test_oid ss_2) M     SS
+:100644 100644 $(test_oid tt_1) $(test_oid tt_3) M     TT
+:000000 100644 $(test_oid zero) $(test_oid zaa2) A     Z/AA
+:100644 000000 $(test_oid zdd1) $(test_oid zero) D     Z/DD
+:100644 100644 $(test_oid zdm1) $(test_oid zdm2) M     Z/DM
+:100644 000000 $(test_oid zmd1) $(test_oid zero) D     Z/MD
+:100644 100644 $(test_oid zmm1) $(test_oid zmm3) M     Z/MM
+:000000 100644 $(test_oid zero) $(test_oid zna1) A     Z/NA
+:100644 000000 $(test_oid znd1) $(test_oid zero) D     Z/ND
+:100644 100644 $(test_oid znm1) $(test_oid znm2) M     Z/NM
 EOF
-cat >.test-plain-AB <<\EOF
-:100644 100644 ccba72ad3888a3520b39efcf780b9ee64167535d 6aa2b5335b16431a0ef71e5c0a28be69183cf6a2 M     AA
-:100644 000000 7e426fb079479fd67f6d81f984e4ec649a44bc25 0000000000000000000000000000000000000000 D     AN
-:000000 100644 0000000000000000000000000000000000000000 71420ab81e254145d26d6fc0cddee64c1acd4787 A     DF
-:040000 000000 6d50f65d3bdab91c63444294d38f08aeff328e42 0000000000000000000000000000000000000000 D     DF
-:000000 100644 0000000000000000000000000000000000000000 3c4d8de5fbad08572bab8e10eef8dbb264cf0231 A     DM
-:000000 100644 0000000000000000000000000000000000000000 35abde1506ddf806572ff4d407bd06885d0f8ee9 A     DN
-:100644 000000 103d9f89b50b9aad03054b579be5e7aa665f2d57 0000000000000000000000000000000000000000 D     MD
-:100644 100644 b431b272d829ff3aa4d1a5085f4394ab4d3305b6 19989d4559aae417fedee240ccf2ba315ea4dc2b M     MM
-:100644 100644 a716d58de4a570e0038f5c307bd8db34daea021f bd084b0c27c7b6cc34f11d6d0509a29be3caf970 M     MN
-:000000 100644 0000000000000000000000000000000000000000 15885881ea69115351c09b38371f0348a3fb8c67 A     NA
-:100644 000000 a4e179e4291e5536a5e1c82e091052772d2c5a93 0000000000000000000000000000000000000000 D     ND
-:100644 100644 c8f25781e8f1792e3e40b74225e20553041b5226 cdb9a8c3da571502ac30225e9c17beccb8387983 M     NM
-:100644 100644 4c86f9a85fbc5e6804ee2e17a797538fbe785bca c4e4a12231b9fa79a0053cb6077fcb21bb5b135a M     TT
-:040000 040000 5e5f22072bb39f6e12cf663a57cb634c76eefb49 1ba523955d5160681af65cb776411f574c1e8155 M     Z
+cat >.test-plain-AB <<EOF
+:100644 100644 $(test_oid aa_1) $(test_oid aa_2) M     AA
+:100644 000000 $(test_oid an_1) $(test_oid zero) D     AN
+:000000 100644 $(test_oid zero) $(test_oid df_2) A     DF
+:040000 000000 $(test_oid df_1) $(test_oid zero) D     DF
+:000000 100644 $(test_oid zero) $(test_oid dm_2) A     DM
+:000000 100644 $(test_oid zero) $(test_oid dn_1) A     DN
+:100644 000000 $(test_oid md_2) $(test_oid zero) D     MD
+:100644 100644 $(test_oid mm_2) $(test_oid mm_3) M     MM
+:100644 100644 $(test_oid mn_2) $(test_oid mn_1) M     MN
+:000000 100644 $(test_oid zero) $(test_oid na_1) A     NA
+:100644 000000 $(test_oid nd_1) $(test_oid zero) D     ND
+:100644 100644 $(test_oid nm_1) $(test_oid nm_2) M     NM
+:100644 100644 $(test_oid tt_2) $(test_oid tt_3) M     TT
+:040000 040000 $(test_oid z__2) $(test_oid z__3) M     Z
 EOF
-cat >.test-recursive-AB <<\EOF
-:100644 100644 ccba72ad3888a3520b39efcf780b9ee64167535d 6aa2b5335b16431a0ef71e5c0a28be69183cf6a2 M     AA
-:100644 000000 7e426fb079479fd67f6d81f984e4ec649a44bc25 0000000000000000000000000000000000000000 D     AN
-:000000 100644 0000000000000000000000000000000000000000 71420ab81e254145d26d6fc0cddee64c1acd4787 A     DF
-:100644 000000 68a6d8b91da11045cf4aa3a5ab9f2a781c701249 0000000000000000000000000000000000000000 D     DF/DF
-:000000 100644 0000000000000000000000000000000000000000 3c4d8de5fbad08572bab8e10eef8dbb264cf0231 A     DM
-:000000 100644 0000000000000000000000000000000000000000 35abde1506ddf806572ff4d407bd06885d0f8ee9 A     DN
-:100644 000000 103d9f89b50b9aad03054b579be5e7aa665f2d57 0000000000000000000000000000000000000000 D     MD
-:100644 100644 b431b272d829ff3aa4d1a5085f4394ab4d3305b6 19989d4559aae417fedee240ccf2ba315ea4dc2b M     MM
-:100644 100644 a716d58de4a570e0038f5c307bd8db34daea021f bd084b0c27c7b6cc34f11d6d0509a29be3caf970 M     MN
-:000000 100644 0000000000000000000000000000000000000000 15885881ea69115351c09b38371f0348a3fb8c67 A     NA
-:100644 000000 a4e179e4291e5536a5e1c82e091052772d2c5a93 0000000000000000000000000000000000000000 D     ND
-:100644 100644 c8f25781e8f1792e3e40b74225e20553041b5226 cdb9a8c3da571502ac30225e9c17beccb8387983 M     NM
-:100644 100644 4c86f9a85fbc5e6804ee2e17a797538fbe785bca c4e4a12231b9fa79a0053cb6077fcb21bb5b135a M     TT
-:100644 100644 8acb8e9750e3f644bf323fcf3d338849db106c77 6c0b99286d0bce551ac4a7b3dff8b706edff3715 M     Z/AA
-:100644 000000 087494262084cefee7ed484d20c8dc0580791272 0000000000000000000000000000000000000000 D     Z/AN
-:000000 100644 0000000000000000000000000000000000000000 d77371d15817fcaa57eeec27f770c505ba974ec1 A     Z/DM
-:000000 100644 0000000000000000000000000000000000000000 beb5d38c55283d280685ea21a0e50cfcc0ca064a A     Z/DN
-:100644 000000 a79ac3be9377639e1c7d1edf1ae1b3a5f0ccd8a9 0000000000000000000000000000000000000000 D     Z/MD
-:100644 100644 61422ba9c2c873416061a88cd40a59a35b576474 697aad7715a1e7306ca76290a3dd4208fbaeddfa M     Z/MM
-:100644 100644 a5c544c21cfcb07eb80a4d89a5b7d1570002edfd b16d7b25b869f2beb124efa53467d8a1550ad694 M     Z/MN
-:000000 100644 0000000000000000000000000000000000000000 d12979c22fff69c59ca9409e7a8fe3ee25eaee80 A     Z/NA
-:100644 000000 a18393c636b98e9bd7296b8b437ea4992b72440c 0000000000000000000000000000000000000000 D     Z/ND
-:100644 100644 3fdbe17fd013303a2e981e1ca1c6cd6e72789087 7e09d6a3a14bd630913e8c75693cea32157b606d M     Z/NM
+cat >.test-recursive-AB <<EOF
+:100644 100644 $(test_oid aa_1) $(test_oid aa_2) M     AA
+:100644 000000 $(test_oid an_1) $(test_oid zero) D     AN
+:000000 100644 $(test_oid zero) $(test_oid df_2) A     DF
+:100644 000000 $(test_oid dfd1) $(test_oid zero) D     DF/DF
+:000000 100644 $(test_oid zero) $(test_oid dm_2) A     DM
+:000000 100644 $(test_oid zero) $(test_oid dn_1) A     DN
+:100644 000000 $(test_oid md_2) $(test_oid zero) D     MD
+:100644 100644 $(test_oid mm_2) $(test_oid mm_3) M     MM
+:100644 100644 $(test_oid mn_2) $(test_oid mn_1) M     MN
+:000000 100644 $(test_oid zero) $(test_oid na_1) A     NA
+:100644 000000 $(test_oid nd_1) $(test_oid zero) D     ND
+:100644 100644 $(test_oid nm_1) $(test_oid nm_2) M     NM
+:100644 100644 $(test_oid tt_2) $(test_oid tt_3) M     TT
+:100644 100644 $(test_oid zaa1) $(test_oid zaa2) M     Z/AA
+:100644 000000 $(test_oid zan1) $(test_oid zero) D     Z/AN
+:000000 100644 $(test_oid zero) $(test_oid zdm2) A     Z/DM
+:000000 100644 $(test_oid zero) $(test_oid zdn1) A     Z/DN
+:100644 000000 $(test_oid zmd2) $(test_oid zero) D     Z/MD
+:100644 100644 $(test_oid zmm2) $(test_oid zmm3) M     Z/MM
+:100644 100644 $(test_oid zmn2) $(test_oid zmn1) M     Z/MN
+:000000 100644 $(test_oid zero) $(test_oid zna1) A     Z/NA
+:100644 000000 $(test_oid znd1) $(test_oid zero) D     Z/ND
+:100644 100644 $(test_oid znm1) $(test_oid znm2) M     Z/NM
 EOF
 
 cmp_diff_files_output () {
index 3641fd8..b63bdf0 100755 (executable)
@@ -14,6 +14,7 @@ test_expect_success \
     'cat "$TEST_DIRECTORY"/diff-lib/COPYING >COPYING &&
      echo frotz >rezrov &&
     git update-index --add COPYING rezrov &&
+    orig=$(git hash-object COPYING) &&
     tree=$(git write-tree) &&
     echo $tree'
 
@@ -22,6 +23,8 @@ test_expect_success \
     'sed -e 's/HOWEVER/However/' <COPYING >COPYING.1 &&
     sed -e 's/GPL/G.P.L/g' <COPYING >COPYING.2 &&
     rm -f COPYING &&
+    c1=$(git hash-object COPYING.1) &&
+    c2=$(git hash-object COPYING.2) &&
     git update-index --add --remove COPYING COPYING.?'
 
 # tree has COPYING and rezrov.  work tree has COPYING.1 and COPYING.2,
@@ -31,11 +34,11 @@ test_expect_success \
 
 git diff-index -z -C $tree >current
 
-cat >expected <<\EOF
-:100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 0603b3238a076dc6c8022aedc6648fa523a17178 C1234
+cat >expected <<EOF
+:100644 100644 $orig $c1 C1234
 COPYING
 COPYING.1
-:100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 06c67961bbaed34a127f76d261f4c0bf73eda471 R1234
+:100644 100644 $orig $c2 R1234
 COPYING
 COPYING.2
 EOF
@@ -57,10 +60,10 @@ test_expect_success \
 # about rezrov.
 
 git diff-index -z -C $tree >current
-cat >expected <<\EOF
-:100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 06c67961bbaed34a127f76d261f4c0bf73eda471 M
+cat >expected <<EOF
+:100644 100644 $orig $c2 M
 COPYING
-:100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 0603b3238a076dc6c8022aedc6648fa523a17178 C1234
+:100644 100644 $orig $c1 C1234
 COPYING
 COPYING.1
 EOF
@@ -82,8 +85,8 @@ test_expect_success \
      git update-index --add --remove COPYING COPYING.1'
 
 git diff-index -z -C --find-copies-harder $tree >current
-cat >expected <<\EOF
-:100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 0603b3238a076dc6c8022aedc6648fa523a17178 C1234
+cat >expected <<EOF
+:100644 100644 $orig $c1 C1234
 COPYING
 COPYING.1
 EOF