@@ -284,8 +284,9 @@ test_expect_success 'A: verify pack' '
284
284
'
285
285
286
286
test_expect_success ' A: verify diff' '
287
+ copy=$(git rev-parse --verify master:file2) &&
287
288
cat >expect <<-EOF &&
288
- :000000 100755 0000000000000000000000000000000000000000 7123f7f44e39be127c5eb701e5968176ee9d78b1 A copy-of-file2
289
+ :000000 100755 0000000000000000000000000000000000000000 $copy A copy-of-file2
289
290
EOF
290
291
git diff-tree -M -r master verify--import-marks >actual &&
291
292
compare_diff_raw expect actual &&
@@ -528,6 +529,7 @@ test_expect_success 'B: fail on invalid committer (5)' '
528
529
test_expect_success ' C: incremental import create pack from stdin' '
529
530
newf=$(echo hi newf | git hash-object -w --stdin) &&
530
531
oldf=$(git rev-parse --verify master:file2) &&
532
+ thrf=$(git rev-parse --verify master:file3) &&
531
533
test_tick &&
532
534
cat >input <<-INPUT_END &&
533
535
commit refs/heads/branch
@@ -570,10 +572,11 @@ test_expect_success 'C: verify commit' '
570
572
'
571
573
572
574
test_expect_success ' C: validate rename result' '
575
+ zero=$ZERO_OID &&
573
576
cat >expect <<-EOF &&
574
- :000000 100755 0000000000000000000000000000000000000000 f1fb5da718392694d0076d677d6d0e364c79b0bc A file2/newf
575
- :100644 100644 7123f7f44e39be127c5eb701e5968176ee9d78b1 7123f7f44e39be127c5eb701e5968176ee9d78b1 R100 file2 file2/oldf
576
- :100644 000000 0d92e9f3374ae2947c23aa477cbc68ce598135f1 0000000000000000000000000000000000000000 D file3
577
+ :000000 100755 $zero $newf A file2/newf
578
+ :100644 100644 $oldf $oldf R100 file2 file2/oldf
579
+ :100644 000000 $thrf $zero D file3
577
580
EOF
578
581
git diff-tree -M -r master branch >actual &&
579
582
compare_diff_raw expect actual
@@ -614,9 +617,11 @@ test_expect_success 'D: verify pack' '
614
617
'
615
618
616
619
test_expect_success ' D: validate new files added' '
620
+ f5id=$(echo "$file5_data" | git hash-object --stdin) &&
621
+ f6id=$(echo "$file6_data" | git hash-object --stdin) &&
617
622
cat >expect <<-EOF &&
618
- :000000 100755 0000000000000000000000000000000000000000 e74b7d465e52746be2b4bae983670711e6e66657 A newdir/exec.sh
619
- :000000 100644 0000000000000000000000000000000000000000 fcf778cda181eaa1cbc9e9ce3a2e15ee9f9fe791 A newdir/interesting
623
+ :000000 100755 0000000000000000000000000000000000000000 $f6id A newdir/exec.sh
624
+ :000000 100644 0000000000000000000000000000000000000000 $f5id A newdir/interesting
620
625
EOF
621
626
git diff-tree -M -r branch^ branch >actual &&
622
627
compare_diff_raw expect actual
@@ -779,12 +784,13 @@ test_expect_success 'H: verify pack' '
779
784
'
780
785
781
786
test_expect_success ' H: validate old files removed, new files added' '
787
+ f4id=$(git rev-parse HEAD:file4) &&
782
788
cat >expect <<-EOF &&
783
- :100755 000000 f1fb5da718392694d0076d677d6d0e364c79b0bc 0000000000000000000000000000000000000000 D file2/newf
784
- :100644 000000 7123f7f44e39be127c5eb701e5968176ee9d78b1 0000000000000000000000000000000000000000 D file2/oldf
785
- :100755 000000 85df50785d62d3b05ab03d9cbf7e4a0b49449730 0000000000000000000000000000000000000000 D file4
786
- :100644 100644 fcf778cda181eaa1cbc9e9ce3a2e15ee9f9fe791 fcf778cda181eaa1cbc9e9ce3a2e15ee9f9fe791 R100 newdir/interesting h/e/l/lo
787
- :100755 000000 e74b7d465e52746be2b4bae983670711e6e66657 0000000000000000000000000000000000000000 D newdir/exec.sh
789
+ :100755 000000 $newf $zero D file2/newf
790
+ :100644 000000 $oldf $zero D file2/oldf
791
+ :100755 000000 $f4id $zero D file4
792
+ :100644 100644 $f5id $f5id R100 newdir/interesting h/e/l/lo
793
+ :100755 000000 $f6id $zero D newdir/exec.sh
788
794
EOF
789
795
git diff-tree -M -r H^ H >actual &&
790
796
compare_diff_raw expect actual
@@ -935,14 +941,15 @@ test_expect_success 'L: verify internal tree sorting' '
935
941
INPUT_END
936
942
937
943
cat >expect <<-EXPECT_END &&
938
- :100644 100644 4268632... 55d3a52... M b.
939
- :040000 040000 0ae5cac... 443c768... M b
940
- :100644 100644 4268632... 55d3a52... M ba
944
+ :100644 100644 M b.
945
+ :040000 040000 M b
946
+ :100644 100644 M ba
941
947
EXPECT_END
942
948
943
949
git fast-import <input &&
944
950
GIT_PRINT_SHA1_ELLIPSIS="yes" git diff-tree --abbrev --raw L^ L >output &&
945
- test_cmp expect output
951
+ cut -d" " -f1,2,5 output >actual &&
952
+ test_cmp expect actual
946
953
'
947
954
948
955
test_expect_success ' L: nested tree copy does not corrupt deltas' '
@@ -1004,7 +1011,7 @@ test_expect_success 'M: rename file in same subdirectory' '
1004
1011
INPUT_END
1005
1012
1006
1013
cat >expect <<-EOF &&
1007
- :100755 100755 f1fb5da718392694d0076d677d6d0e364c79b0bc f1fb5da718392694d0076d677d6d0e364c79b0bc R100 file2/newf file2/n.e.w.f
1014
+ :100755 100755 $newf $newf R100 file2/newf file2/n.e.w.f
1008
1015
EOF
1009
1016
git fast-import <input &&
1010
1017
git diff-tree -M -r M1^ M1 >actual &&
@@ -1025,7 +1032,7 @@ test_expect_success 'M: rename file to new subdirectory' '
1025
1032
INPUT_END
1026
1033
1027
1034
cat >expect <<-EOF &&
1028
- :100755 100755 f1fb5da718392694d0076d677d6d0e364c79b0bc f1fb5da718392694d0076d677d6d0e364c79b0bc R100 file2/newf i/am/new/to/you
1035
+ :100755 100755 $newf $newf R100 file2/newf i/am/new/to/you
1029
1036
EOF
1030
1037
git fast-import <input &&
1031
1038
git diff-tree -M -r M2^ M2 >actual &&
@@ -1046,7 +1053,7 @@ test_expect_success 'M: rename subdirectory to new subdirectory' '
1046
1053
INPUT_END
1047
1054
1048
1055
cat >expect <<-EOF &&
1049
- :100755 100755 f1fb5da718392694d0076d677d6d0e364c79b0bc f1fb5da718392694d0076d677d6d0e364c79b0bc R100 i/am/new/to/you other/sub/am/new/to/you
1056
+ :100755 100755 $newf $newf R100 i/am/new/to/you other/sub/am/new/to/you
1050
1057
EOF
1051
1058
git fast-import <input &&
1052
1059
git diff-tree -M -r M3^ M3 >actual &&
@@ -1067,11 +1074,11 @@ test_expect_success 'M: rename root to subdirectory' '
1067
1074
INPUT_END
1068
1075
1069
1076
cat >expect <<-EOF &&
1070
- :100644 100644 7123f7f44e39be127c5eb701e5968176ee9d78b1 7123f7f44e39be127c5eb701e5968176ee9d78b1 R100 file2/oldf sub/file2/oldf
1071
- :100755 100755 85df50785d62d3b05ab03d9cbf7e4a0b49449730 85df50785d62d3b05ab03d9cbf7e4a0b49449730 R100 file4 sub/file4
1072
- :100755 100755 f1fb5da718392694d0076d677d6d0e364c79b0bc f1fb5da718392694d0076d677d6d0e364c79b0bc R100 i/am/new/to/you sub/i/am/new/to/you
1073
- :100755 100755 e74b7d465e52746be2b4bae983670711e6e66657 e74b7d465e52746be2b4bae983670711e6e66657 R100 newdir/exec.sh sub/newdir/exec.sh
1074
- :100644 100644 fcf778cda181eaa1cbc9e9ce3a2e15ee9f9fe791 fcf778cda181eaa1cbc9e9ce3a2e15ee9f9fe791 R100 newdir/interesting sub/newdir/interesting
1077
+ :100644 100644 $oldf $oldf R100 file2/oldf sub/file2/oldf
1078
+ :100755 100755 $f4id $f4id R100 file4 sub/file4
1079
+ :100755 100755 $newf $newf R100 i/am/new/to/you sub/i/am/new/to/you
1080
+ :100755 100755 $f6id $f6id R100 newdir/exec.sh sub/newdir/exec.sh
1081
+ :100644 100644 $f5id $f5id R100 newdir/interesting sub/newdir/interesting
1075
1082
EOF
1076
1083
git fast-import <input &&
1077
1084
git diff-tree -M -r M4^ M4 >actual &&
@@ -1097,7 +1104,7 @@ test_expect_success 'N: copy file in same subdirectory' '
1097
1104
INPUT_END
1098
1105
1099
1106
cat >expect <<-EOF &&
1100
- :100755 100755 f1fb5da718392694d0076d677d6d0e364c79b0bc f1fb5da718392694d0076d677d6d0e364c79b0bc C100 file2/newf file2/n.e.w.f
1107
+ :100755 100755 $newf $newf C100 file2/newf file2/n.e.w.f
1101
1108
EOF
1102
1109
git fast-import <input &&
1103
1110
git diff-tree -C --find-copies-harder -r N1^ N1 >actual &&
@@ -1129,9 +1136,9 @@ test_expect_success 'N: copy then modify subdirectory' '
1129
1136
INPUT_END
1130
1137
1131
1138
cat >expect <<-EOF &&
1132
- :100644 100644 fcf778cda181eaa1cbc9e9ce3a2e15ee9f9fe791 fcf778cda181eaa1cbc9e9ce3a2e15ee9f9fe791 C100 newdir/interesting file3/file5
1133
- :100755 100755 f1fb5da718392694d0076d677d6d0e364c79b0bc f1fb5da718392694d0076d677d6d0e364c79b0bc C100 file2/newf file3/newf
1134
- :100644 100644 7123f7f44e39be127c5eb701e5968176ee9d78b1 7123f7f44e39be127c5eb701e5968176ee9d78b1 C100 file2/oldf file3/oldf
1139
+ :100644 100644 $f5id $f5id C100 newdir/interesting file3/file5
1140
+ :100755 100755 $newf $newf C100 file2/newf file3/newf
1141
+ :100644 100644 $oldf $oldf C100 file2/oldf file3/oldf
1135
1142
EOF
1136
1143
git fast-import <input &&
1137
1144
git diff-tree -C --find-copies-harder -r N2^^ N2 >actual &&
@@ -1162,9 +1169,9 @@ test_expect_success 'N: copy dirty subdirectory' '
1162
1169
'
1163
1170
1164
1171
test_expect_success ' N: copy directory by id' '
1165
- cat >expect <<-\ EOF &&
1166
- :100755 100755 f1fb5da718392694d0076d677d6d0e364c79b0bc f1fb5da718392694d0076d677d6d0e364c79b0bc C100 file2/newf file3/newf
1167
- :100644 100644 7123f7f44e39be127c5eb701e5968176ee9d78b1 7123f7f44e39be127c5eb701e5968176ee9d78b1 C100 file2/oldf file3/oldf
1172
+ cat >expect <<-EOF &&
1173
+ :100755 100755 $newf $newf C100 file2/newf file3/newf
1174
+ :100644 100644 $oldf $oldf C100 file2/oldf file3/oldf
1168
1175
EOF
1169
1176
subdir=$(git rev-parse refs/heads/branch^0:file2) &&
1170
1177
cat >input <<-INPUT_END &&
@@ -1183,9 +1190,9 @@ test_expect_success 'N: copy directory by id' '
1183
1190
'
1184
1191
1185
1192
test_expect_success PIPE ' N: read and copy directory' '
1186
- cat >expect <<-\ EOF &&
1187
- :100755 100755 f1fb5da718392694d0076d677d6d0e364c79b0bc f1fb5da718392694d0076d677d6d0e364c79b0bc C100 file2/newf file3/newf
1188
- :100644 100644 7123f7f44e39be127c5eb701e5968176ee9d78b1 7123f7f44e39be127c5eb701e5968176ee9d78b1 C100 file2/oldf file3/oldf
1193
+ cat >expect <<-EOF &&
1194
+ :100755 100755 $newf $newf C100 file2/newf file3/newf
1195
+ :100644 100644 $oldf $oldf C100 file2/oldf file3/oldf
1189
1196
EOF
1190
1197
git update-ref -d refs/heads/N4 &&
1191
1198
rm -f backflow &&
@@ -1254,9 +1261,9 @@ test_expect_success PIPE 'N: empty directory reads as missing' '
1254
1261
'
1255
1262
1256
1263
test_expect_success ' N: copy root directory by tree hash' '
1257
- cat >expect <<-\ EOF &&
1258
- :100755 000000 f1fb5da718392694d0076d677d6d0e364c79b0bc 0000000000000000000000000000000000000000 D file3/newf
1259
- :100644 000000 7123f7f44e39be127c5eb701e5968176ee9d78b1 0000000000000000000000000000000000000000 D file3/oldf
1264
+ cat >expect <<-EOF &&
1265
+ :100755 000000 $newf $zero D file3/newf
1266
+ :100644 000000 $oldf $zero D file3/oldf
1260
1267
EOF
1261
1268
root=$(git rev-parse refs/heads/branch^0^{tree}) &&
1262
1269
cat >input <<-INPUT_END &&
@@ -1275,12 +1282,12 @@ test_expect_success 'N: copy root directory by tree hash' '
1275
1282
'
1276
1283
1277
1284
test_expect_success ' N: copy root by path' '
1278
- cat >expect <<-\ EOF &&
1279
- :100755 100755 f1fb5da718392694d0076d677d6d0e364c79b0bc f1fb5da718392694d0076d677d6d0e364c79b0bc C100 file2/newf oldroot/file2/newf
1280
- :100644 100644 7123f7f44e39be127c5eb701e5968176ee9d78b1 7123f7f44e39be127c5eb701e5968176ee9d78b1 C100 file2/oldf oldroot/file2/oldf
1281
- :100755 100755 85df50785d62d3b05ab03d9cbf7e4a0b49449730 85df50785d62d3b05ab03d9cbf7e4a0b49449730 C100 file4 oldroot/file4
1282
- :100755 100755 e74b7d465e52746be2b4bae983670711e6e66657 e74b7d465e52746be2b4bae983670711e6e66657 C100 newdir/exec.sh oldroot/newdir/exec.sh
1283
- :100644 100644 fcf778cda181eaa1cbc9e9ce3a2e15ee9f9fe791 fcf778cda181eaa1cbc9e9ce3a2e15ee9f9fe791 C100 newdir/interesting oldroot/newdir/interesting
1285
+ cat >expect <<-EOF &&
1286
+ :100755 100755 $newf $newf C100 file2/newf oldroot/file2/newf
1287
+ :100644 100644 $oldf $oldf C100 file2/oldf oldroot/file2/oldf
1288
+ :100755 100755 $f4id $f4id C100 file4 oldroot/file4
1289
+ :100755 100755 $f6id $f6id C100 newdir/exec.sh oldroot/newdir/exec.sh
1290
+ :100644 100644 $f5id $f5id C100 newdir/interesting oldroot/newdir/interesting
1284
1291
EOF
1285
1292
cat >input <<-INPUT_END &&
1286
1293
commit refs/heads/N-copy-root-path
@@ -1340,10 +1347,10 @@ test_expect_success 'N: delete directory by copying' '
1340
1347
'
1341
1348
1342
1349
test_expect_success ' N: modify copied tree' '
1343
- cat >expect <<-\ EOF &&
1344
- :100644 100644 fcf778cda181eaa1cbc9e9ce3a2e15ee9f9fe791 fcf778cda181eaa1cbc9e9ce3a2e15ee9f9fe791 C100 newdir/interesting file3/file5
1345
- :100755 100755 f1fb5da718392694d0076d677d6d0e364c79b0bc f1fb5da718392694d0076d677d6d0e364c79b0bc C100 file2/newf file3/newf
1346
- :100644 100644 7123f7f44e39be127c5eb701e5968176ee9d78b1 7123f7f44e39be127c5eb701e5968176ee9d78b1 C100 file2/oldf file3/oldf
1350
+ cat >expect <<-EOF &&
1351
+ :100644 100644 $f5id $f5id C100 newdir/interesting file3/file5
1352
+ :100755 100755 $newf $newf C100 file2/newf file3/newf
1353
+ :100644 100644 $oldf $oldf C100 file2/oldf file3/oldf
1347
1354
EOF
1348
1355
subdir=$(git rev-parse refs/heads/branch^0:file2) &&
1349
1356
cat >input <<-INPUT_END &&
@@ -3117,6 +3124,9 @@ test_expect_success 'U: initialize for U tests' '
3117
3124
3118
3125
INPUT_END
3119
3126
3127
+ f7id=$(echo "blob 1" | git hash-object --stdin) &&
3128
+ f8id=$(echo "sleep well" | git hash-object --stdin) &&
3129
+ f9id=$(echo "au revoir" | git hash-object --stdin) &&
3120
3130
git fast-import <input
3121
3131
'
3122
3132
@@ -3137,7 +3147,7 @@ test_expect_success 'U: filedelete file succeeds' '
3137
3147
3138
3148
test_expect_success ' U: validate file delete result' '
3139
3149
cat >expect <<-EOF &&
3140
- :100644 000000 2907ebb4bf85d91bf0716bb3bd8a68ef48d6da76 0000000000000000000000000000000000000000 D good/night.txt
3150
+ :100644 000000 $f8id $ZERO_OID D good/night.txt
3141
3151
EOF
3142
3152
3143
3153
git diff-tree -M -r U^1 U >actual &&
@@ -3162,7 +3172,7 @@ test_expect_success 'U: filedelete directory succeeds' '
3162
3172
3163
3173
test_expect_success ' U: validate directory delete result' '
3164
3174
cat >expect <<-EOF &&
3165
- :100644 000000 69cb75792f55123d8389c156b0b41c2ff00ed507 0000000000000000000000000000000000000000 D good/bye.txt
3175
+ :100644 000000 $f9id $ZERO_OID D good/bye.txt
3166
3176
EOF
3167
3177
3168
3178
git diff-tree -M -r U^1 U >actual &&
@@ -3187,7 +3197,7 @@ test_expect_success 'U: filedelete root succeeds' '
3187
3197
3188
3198
test_expect_success ' U: validate root delete result' '
3189
3199
cat >expect <<-EOF &&
3190
- :100644 000000 c18147dc648481eeb65dc5e66628429a64843327 0000000000000000000000000000000000000000 D hello.c
3200
+ :100644 000000 $f7id $ZERO_OID D hello.c
3191
3201
EOF
3192
3202
3193
3203
git diff-tree -M -r U^1 U >actual &&
0 commit comments