(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_description) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'merge-recursive backend test' span_id:6))} spids: [4] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup 1' span_id:18))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:22) (Token id:Id.Lit_Chars val:'\n' span_id:23) (Token id:Id.Lit_Chars val:'\techo hello >a &&\n' span_id:24) (Token id:Id.Lit_Chars val:'\to0=$(git hash-object a) &&\n' span_id:25) (Token id:Id.Lit_Chars val:'\tcp a b &&\n' span_id:26) (Token id:Id.Lit_Chars val:'\tcp a c &&\n' span_id:27) (Token id:Id.Lit_Chars val:'\tmkdir d &&\n' span_id:28) (Token id:Id.Lit_Chars val:'\tcp a d/e &&\n' span_id:29) (Token id:Id.Lit_Chars val:'\n' span_id:30) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:31) (Token id:Id.Lit_Chars val:'\tgit add a b c d/e &&\n' span_id:32) (Token id:Id.Lit_Chars val:'\tgit commit -m initial &&\n' span_id:33) (Token id:Id.Lit_Chars val:'\tc0=$(git rev-parse --verify HEAD) &&\n' span_id:34) (Token id:Id.Lit_Chars val:'\tgit branch side &&\n' span_id:35) (Token id:Id.Lit_Chars val:'\tgit branch df-1 &&\n' span_id:36) (Token id:Id.Lit_Chars val:'\tgit branch df-2 &&\n' span_id:37) (Token id:Id.Lit_Chars val:'\tgit branch df-3 &&\n' span_id:38) (Token id:Id.Lit_Chars val:'\tgit branch remove &&\n' span_id:39) (Token id:Id.Lit_Chars val:'\tgit branch submod &&\n' span_id:40) (Token id:Id.Lit_Chars val:'\tgit branch copy &&\n' span_id:41) (Token id:Id.Lit_Chars val:'\tgit branch rename &&\n' span_id:42) (Token id:Id.Lit_Chars val:'\tgit branch rename-ln &&\n' span_id:43) (Token id:Id.Lit_Chars val:'\n' span_id:44) (Token id:Id.Lit_Chars val:'\techo hello >>a &&\n' span_id:45) (Token id:Id.Lit_Chars val:'\tcp a d/e &&\n' span_id:46) (Token id:Id.Lit_Chars val:'\to1=$(git hash-object a) &&\n' span_id:47) (Token id:Id.Lit_Chars val:'\n' span_id:48) (Token id:Id.Lit_Chars val:'\tgit add a d/e &&\n' span_id:49) (Token id:Id.Lit_Chars val:'\n' span_id:50) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:51) (Token id: Id.Lit_Chars val: '\tgit commit -m "master modifies a and d/e" &&\n' span_id: 52 ) (Token id:Id.Lit_Chars val:'\tc1=$(git rev-parse --verify HEAD) &&\n' span_id:53) (Token id: Id.Lit_Chars val: '\t( git ls-tree -r HEAD ; git ls-files -s ) >actual &&\n' span_id: 54 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:55) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o1\ta"\n' span_id:56) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tb"\n' span_id:57) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tc"\n' span_id:58) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o1\td/e"\n' span_id:59) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\ta"\n' span_id:60) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tb"\n' span_id:61) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:62) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\td/e"\n' span_id:63) (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:64) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:65) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup 2' span_id:72))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:76) (Token id:Id.Lit_Chars val:'\n' span_id:77) (Token id:Id.Lit_Chars val:'\trm -rf [abcd] &&\n' span_id:78) (Token id:Id.Lit_Chars val:'\tgit checkout side &&\n' span_id:79) (Token id: Id.Lit_Chars val: '\t( git ls-tree -r HEAD ; git ls-files -s ) >actual &&\n' span_id: 80 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:81) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\ta"\n' span_id:82) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tb"\n' span_id:83) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tc"\n' span_id:84) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\td/e"\n' span_id:85) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\ta"\n' span_id:86) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tb"\n' span_id:87) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:88) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\td/e"\n' span_id:89) (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:90) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:91) (Token id:Id.Lit_Chars val:'\n' span_id:92) (Token id:Id.Lit_Chars val:'\techo goodbye >>a &&\n' span_id:93) (Token id:Id.Lit_Chars val:'\to2=$(git hash-object a) &&\n' span_id:94) (Token id:Id.Lit_Chars val:'\n' span_id:95) (Token id:Id.Lit_Chars val:'\tgit add a &&\n' span_id:96) (Token id:Id.Lit_Chars val:'\n' span_id:97) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:98) (Token id:Id.Lit_Chars val:'\tgit commit -m "side modifies a" &&\n' span_id:99) (Token id:Id.Lit_Chars val:'\tc2=$(git rev-parse --verify HEAD) &&\n' span_id:100) (Token id: Id.Lit_Chars val: '\t( git ls-tree -r HEAD ; git ls-files -s ) >actual &&\n' span_id: 101 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:102) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o2\ta"\n' span_id:103) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tb"\n' span_id:104) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tc"\n' span_id:105) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\td/e"\n' span_id:106) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o2 0\ta"\n' span_id:107) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tb"\n' span_id:108) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:109) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\td/e"\n' span_id:110) (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:111) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:112) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup 3' span_id:119))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:123) (Token id:Id.Lit_Chars val:'\n' span_id:124) (Token id:Id.Lit_Chars val:'\trm -rf [abcd] &&\n' span_id:125) (Token id:Id.Lit_Chars val:'\tgit checkout df-1 &&\n' span_id:126) (Token id: Id.Lit_Chars val: '\t( git ls-tree -r HEAD ; git ls-files -s ) >actual &&\n' span_id: 127 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:128) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\ta"\n' span_id:129) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tb"\n' span_id:130) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tc"\n' span_id:131) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\td/e"\n' span_id:132) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\ta"\n' span_id:133) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tb"\n' span_id:134) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:135) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\td/e"\n' span_id:136) (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:137) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:138) (Token id:Id.Lit_Chars val:'\n' span_id:139) (Token id:Id.Lit_Chars val:'\trm -f b && mkdir b && echo df-1 >b/c && git add b/c &&\n' span_id:140) (Token id:Id.Lit_Chars val:'\to3=$(git hash-object b/c) &&\n' span_id:141) (Token id:Id.Lit_Chars val:'\n' span_id:142) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:143) (Token id:Id.Lit_Chars val:'\tgit commit -m "df-1 makes b/c" &&\n' span_id:144) (Token id: Id.Lit_Chars val: '\tc3=$(git rev-parse --verify HEAD) &&\n' span_id: 145 ) (Token id:Id.Lit_Chars val:'\t( git ls-tree -r HEAD ; git ls-files -s ) >actual &&\n' span_id:146) (Token id:Id.Lit_Chars val:'\t(\n' span_id:147) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\ta"\n' span_id:148) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o3\tb/c"\n' span_id:149) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tc"\n' span_id:150) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\td/e"\n' span_id:151) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\ta"\n' span_id:152) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o3 0\tb/c"\n' span_id:153) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:154) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\td/e"\n' span_id:155) (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:156) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:157) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup 4' span_id:164))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:168) (Token id:Id.Lit_Chars val:'\n' span_id:169) (Token id:Id.Lit_Chars val:'\trm -rf [abcd] &&\n' span_id:170) (Token id:Id.Lit_Chars val:'\tgit checkout df-2 &&\n' span_id:171) (Token id: Id.Lit_Chars val: '\t( git ls-tree -r HEAD ; git ls-files -s ) >actual &&\n' span_id: 172 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:173) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\ta"\n' span_id:174) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tb"\n' span_id:175) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tc"\n' span_id:176) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\td/e"\n' span_id:177) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\ta"\n' span_id:178) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tb"\n' span_id:179) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:180) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\td/e"\n' span_id:181) (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:182) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:183) (Token id:Id.Lit_Chars val:'\n' span_id:184) (Token id:Id.Lit_Chars val:'\trm -f a && mkdir a && echo df-2 >a/c && git add a/c &&\n' span_id:185) (Token id:Id.Lit_Chars val:'\to4=$(git hash-object a/c) &&\n' span_id:186) (Token id:Id.Lit_Chars val:'\n' span_id:187) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:188) (Token id:Id.Lit_Chars val:'\tgit commit -m "df-2 makes a/c" &&\n' span_id:189) (Token id: Id.Lit_Chars val: '\tc4=$(git rev-parse --verify HEAD) &&\n' span_id: 190 ) (Token id:Id.Lit_Chars val:'\t( git ls-tree -r HEAD ; git ls-files -s ) >actual &&\n' span_id:191) (Token id:Id.Lit_Chars val:'\t(\n' span_id:192) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o4\ta/c"\n' span_id:193) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tb"\n' span_id:194) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tc"\n' span_id:195) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\td/e"\n' span_id:196) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o4 0\ta/c"\n' span_id:197) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tb"\n' span_id:198) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:199) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\td/e"\n' span_id:200) (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:201) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:202) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup 5' span_id:209))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:213) (Token id:Id.Lit_Chars val:'\n' span_id:214) (Token id:Id.Lit_Chars val:'\trm -rf [abcd] &&\n' span_id:215) (Token id:Id.Lit_Chars val:'\tgit checkout remove &&\n' span_id:216) (Token id: Id.Lit_Chars val: '\t( git ls-tree -r HEAD ; git ls-files -s ) >actual &&\n' span_id: 217 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:218) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\ta"\n' span_id:219) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tb"\n' span_id:220) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tc"\n' span_id:221) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\td/e"\n' span_id:222) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\ta"\n' span_id:223) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tb"\n' span_id:224) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:225) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\td/e"\n' span_id:226) (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:227) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:228) (Token id:Id.Lit_Chars val:'\n' span_id:229) (Token id:Id.Lit_Chars val:'\trm -f b &&\n' span_id:230) (Token id:Id.Lit_Chars val:'\techo remove-conflict >a &&\n' span_id:231) (Token id:Id.Lit_Chars val:'\n' span_id:232) (Token id:Id.Lit_Chars val:'\tgit add a &&\n' span_id:233) (Token id:Id.Lit_Chars val:'\tgit rm b &&\n' span_id:234) (Token id:Id.Lit_Chars val:'\to5=$(git hash-object a) &&\n' span_id:235) (Token id:Id.Lit_Chars val:'\n' span_id:236) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:237) (Token id:Id.Lit_Chars val:'\tgit commit -m "remove removes b and modifies a" &&\n' span_id:238) (Token id: Id.Lit_Chars val: '\tc5=$(git rev-parse --verify HEAD) &&\n' span_id: 239 ) (Token id:Id.Lit_Chars val:'\t( git ls-tree -r HEAD ; git ls-files -s ) >actual &&\n' span_id:240) (Token id:Id.Lit_Chars val:'\t(\n' span_id:241) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o5\ta"\n' span_id:242) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tc"\n' span_id:243) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\td/e"\n' span_id:244) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o5 0\ta"\n' span_id:245) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:246) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\td/e"\n' span_id:247) (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:248) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:249) (Token id:Id.Lit_Chars val:'\n' span_id:250) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup 6' span_id:257))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:261) (Token id:Id.Lit_Chars val:'\n' span_id:262) (Token id:Id.Lit_Chars val:'\trm -rf [abcd] &&\n' span_id:263) (Token id:Id.Lit_Chars val:'\tgit checkout df-3 &&\n' span_id:264) (Token id: Id.Lit_Chars val: '\t( git ls-tree -r HEAD ; git ls-files -s ) >actual &&\n' span_id: 265 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:266) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\ta"\n' span_id:267) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tb"\n' span_id:268) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tc"\n' span_id:269) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\td/e"\n' span_id:270) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\ta"\n' span_id:271) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tb"\n' span_id:272) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:273) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\td/e"\n' span_id:274) (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:275) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:276) (Token id:Id.Lit_Chars val:'\n' span_id:277) (Token id:Id.Lit_Chars val:'\trm -fr d && echo df-3 >d && git add d &&\n' span_id:278) (Token id:Id.Lit_Chars val:'\to6=$(git hash-object d) &&\n' span_id:279) (Token id:Id.Lit_Chars val:'\n' span_id:280) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:281) (Token id:Id.Lit_Chars val:'\tgit commit -m "df-3 makes d" &&\n' span_id:282) (Token id: Id.Lit_Chars val: '\tc6=$(git rev-parse --verify HEAD) &&\n' span_id: 283 ) (Token id:Id.Lit_Chars val:'\t( git ls-tree -r HEAD ; git ls-files -s ) >actual &&\n' span_id:284) (Token id:Id.Lit_Chars val:'\t(\n' span_id:285) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\ta"\n' span_id:286) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tb"\n' span_id:287) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tc"\n' span_id:288) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o6\td"\n' span_id:289) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\ta"\n' span_id:290) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tb"\n' span_id:291) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:292) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o6 0\td"\n' span_id:293) (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:294) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:295) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup 7' span_id:302))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:306) (Token id:Id.Lit_Chars val:'\n' span_id:307) (Token id:Id.Lit_Chars val:'\tgit checkout submod &&\n' span_id:308) (Token id:Id.Lit_Chars val:'\tgit rm d/e &&\n' span_id:309) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:310) (Token id:Id.Lit_Chars val:'\tgit commit -m "remove d/e" &&\n' span_id:311) (Token id: Id.Lit_Chars val: '\tgit update-index --add --cacheinfo 160000 $c1 d &&\n' span_id: 312 ) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:313) (Token id:Id.Lit_Chars val:'\tgit commit -m "make d/ a submodule"\n' span_id:314) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup 8' span_id:321))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:325) (Token id:Id.Lit_Chars val:'\tgit checkout rename &&\n' span_id:326) (Token id:Id.Lit_Chars val:'\tgit mv a e &&\n' span_id:327) (Token id:Id.Lit_Chars val:'\tgit add e &&\n' span_id:328) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:329) (Token id:Id.Lit_Chars val:'\tgit commit -m "rename a->e" &&\n' span_id:330) (Token id:Id.Lit_Chars val:'\tc7=$(git rev-parse --verify HEAD) &&\n' span_id:331) (Token id:Id.Lit_Chars val:'\tgit checkout rename-ln &&\n' span_id:332) (Token id:Id.Lit_Chars val:'\tgit mv a e &&\n' span_id:333) (Token id:Id.Lit_Chars val:'\ttest_ln_s_add e a &&\n' span_id:334) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:335) (Token id: Id.Lit_Chars val: '\tgit commit -m "rename a->e, symlink a->e" &&\n' span_id: 336 ) (Token id:Id.Lit_Chars val:'\toln=$(printf e | git hash-object --stdin)\n' span_id:337) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup 9' span_id:344))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:348) (Token id:Id.Lit_Chars val:'\tgit checkout copy &&\n' span_id:349) (Token id:Id.Lit_Chars val:'\tcp a e &&\n' span_id:350) (Token id:Id.Lit_Chars val:'\tgit add e &&\n' span_id:351) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:352) (Token id:Id.Lit_Chars val:'\tgit commit -m "copy a->e"\n' span_id:353) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge-recursive simple' span_id:360))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:364) (Token id:Id.Lit_Chars val:'\n' span_id:365) (Token id:Id.Lit_Chars val:'\trm -fr [abcd] &&\n' span_id:366) (Token id:Id.Lit_Chars val:'\tgit checkout -f "$c2" &&\n' span_id:367) (Token id:Id.Lit_Chars val:'\n' span_id:368) (Token id: Id.Lit_Chars val: '\ttest_expect_code 1 git merge-recursive "$c0" -- "$c2" "$c1"\n' span_id: 369 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge-recursive result' span_id:376))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:380) (Token id:Id.Lit_Chars val:'\n' span_id:381) (Token id:Id.Lit_Chars val:'\tgit ls-files -s >actual &&\n' span_id:382) (Token id:Id.Lit_Chars val:'\t(\n' span_id:383) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 1\ta"\n' span_id:384) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o2 2\ta"\n' span_id:385) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 3\ta"\n' span_id:386) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tb"\n' span_id:387) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:388) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\td/e"\n' span_id:389) (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:390) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:391) (Token id:Id.Lit_Chars val:'\n' span_id:392) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fail if the index has unresolved entries' span_id:399))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:403) (Token id:Id.Lit_Chars val:'\n' span_id:404) (Token id:Id.Lit_Chars val:'\trm -fr [abcd] &&\n' span_id:405) (Token id:Id.Lit_Chars val:'\tgit checkout -f "$c1" &&\n' span_id:406) (Token id:Id.Lit_Chars val:'\n' span_id:407) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge "$c5" &&\n' span_id:408) (Token id: Id.Lit_Chars val: '\ttest_must_fail git merge "$c5" 2> out &&\n' span_id: 409 ) (Token id: Id.Lit_Chars val: '\ttest_i18ngrep "not possible because you have unmerged files" out &&\n' span_id: 410 ) (Token id:Id.Lit_Chars val:'\tgit add -u &&\n' span_id:411) (Token id: Id.Lit_Chars val: '\ttest_must_fail git merge "$c5" 2> out &&\n' span_id: 412 ) (Token id: Id.Lit_Chars val: '\ttest_i18ngrep "You have not concluded your merge" out &&\n' span_id: 413 ) (Token id:Id.Lit_Chars val:'\trm -f .git/MERGE_HEAD &&\n' span_id:414) (Token id: Id.Lit_Chars val: '\ttest_must_fail git merge "$c5" 2> out &&\n' span_id: 415 ) (Token id: Id.Lit_Chars val: '\ttest_i18ngrep "Your local changes to the following files would be overwritten by merge:" out\n' span_id: 416 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge-recursive remove conflict' span_id:423))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:427) (Token id:Id.Lit_Chars val:'\n' span_id:428) (Token id:Id.Lit_Chars val:'\trm -fr [abcd] &&\n' span_id:429) (Token id:Id.Lit_Chars val:'\tgit checkout -f "$c1" &&\n' span_id:430) (Token id:Id.Lit_Chars val:'\n' span_id:431) (Token id: Id.Lit_Chars val: '\ttest_expect_code 1 git merge-recursive "$c0" -- "$c1" "$c5"\n' span_id: 432 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge-recursive remove conflict' span_id:439))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:443) (Token id:Id.Lit_Chars val:'\n' span_id:444) (Token id:Id.Lit_Chars val:'\tgit ls-files -s >actual &&\n' span_id:445) (Token id:Id.Lit_Chars val:'\t(\n' span_id:446) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 1\ta"\n' span_id:447) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 2\ta"\n' span_id:448) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o5 3\ta"\n' span_id:449) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:450) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\td/e"\n' span_id:451) (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:452) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:453) (Token id:Id.Lit_Chars val:'\n' span_id:454) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge-recursive d/f simple' span_id:461))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:465) (Token id:Id.Lit_Chars val:'\trm -fr [abcd] &&\n' span_id:466) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:467) (Token id:Id.Lit_Chars val:'\tgit checkout -f "$c1" &&\n' span_id:468) (Token id:Id.Lit_Chars val:'\n' span_id:469) (Token id: Id.Lit_Chars val: '\tgit merge-recursive "$c0" -- "$c1" "$c3"\n' span_id: 470 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge-recursive result' span_id:477))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:481) (Token id:Id.Lit_Chars val:'\n' span_id:482) (Token id:Id.Lit_Chars val:'\tgit ls-files -s >actual &&\n' span_id:483) (Token id:Id.Lit_Chars val:'\t(\n' span_id:484) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\ta"\n' span_id:485) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o3 0\tb/c"\n' span_id:486) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:487) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\td/e"\n' span_id:488) (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:489) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:490) (Token id:Id.Lit_Chars val:'\n' span_id:491) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge-recursive d/f conflict' span_id:498))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:502) (Token id:Id.Lit_Chars val:'\n' span_id:503) (Token id:Id.Lit_Chars val:'\trm -fr [abcd] &&\n' span_id:504) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:505) (Token id:Id.Lit_Chars val:'\tgit checkout -f "$c1" &&\n' span_id:506) (Token id:Id.Lit_Chars val:'\n' span_id:507) (Token id: Id.Lit_Chars val: '\ttest_expect_code 1 git merge-recursive "$c0" -- "$c1" "$c4"\n' span_id: 508 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge-recursive d/f conflict result' span_id:515))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:519) (Token id:Id.Lit_Chars val:'\n' span_id:520) (Token id:Id.Lit_Chars val:'\tgit ls-files -s >actual &&\n' span_id:521) (Token id:Id.Lit_Chars val:'\t(\n' span_id:522) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 1\ta"\n' span_id:523) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 2\ta"\n' span_id:524) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o4 0\ta/c"\n' span_id:525) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tb"\n' span_id:526) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:527) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\td/e"\n' span_id:528) (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:529) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:530) (Token id:Id.Lit_Chars val:'\n' span_id:531) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge-recursive d/f conflict the other way' span_id:538))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:542) (Token id:Id.Lit_Chars val:'\n' span_id:543) (Token id:Id.Lit_Chars val:'\trm -fr [abcd] &&\n' span_id:544) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:545) (Token id:Id.Lit_Chars val:'\tgit checkout -f "$c4" &&\n' span_id:546) (Token id:Id.Lit_Chars val:'\n' span_id:547) (Token id: Id.Lit_Chars val: '\ttest_expect_code 1 git merge-recursive "$c0" -- "$c4" "$c1"\n' span_id: 548 ) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'merge-recursive d/f conflict result the other way' span_id: 555 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:559) (Token id:Id.Lit_Chars val:'\n' span_id:560) (Token id:Id.Lit_Chars val:'\tgit ls-files -s >actual &&\n' span_id:561) (Token id:Id.Lit_Chars val:'\t(\n' span_id:562) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 1\ta"\n' span_id:563) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 3\ta"\n' span_id:564) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o4 0\ta/c"\n' span_id:565) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tb"\n' span_id:566) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:567) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\td/e"\n' span_id:568) (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:569) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:570) (Token id:Id.Lit_Chars val:'\n' span_id:571) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge-recursive d/f conflict' span_id:578))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:582) (Token id:Id.Lit_Chars val:'\n' span_id:583) (Token id:Id.Lit_Chars val:'\trm -fr [abcd] &&\n' span_id:584) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:585) (Token id:Id.Lit_Chars val:'\tgit checkout -f "$c1" &&\n' span_id:586) (Token id:Id.Lit_Chars val:'\n' span_id:587) (Token id: Id.Lit_Chars val: '\ttest_expect_code 1 git merge-recursive "$c0" -- "$c1" "$c6"\n' span_id: 588 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge-recursive d/f conflict result' span_id:595))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:599) (Token id:Id.Lit_Chars val:'\n' span_id:600) (Token id:Id.Lit_Chars val:'\tgit ls-files -s >actual &&\n' span_id:601) (Token id:Id.Lit_Chars val:'\t(\n' span_id:602) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\ta"\n' span_id:603) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tb"\n' span_id:604) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:605) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o6 3\td"\n' span_id:606) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 1\td/e"\n' span_id:607) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 2\td/e"\n' span_id:608) (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:609) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:610) (Token id:Id.Lit_Chars val:'\n' span_id:611) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge-recursive d/f conflict' span_id:618))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:622) (Token id:Id.Lit_Chars val:'\n' span_id:623) (Token id:Id.Lit_Chars val:'\trm -fr [abcd] &&\n' span_id:624) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:625) (Token id:Id.Lit_Chars val:'\tgit checkout -f "$c6" &&\n' span_id:626) (Token id:Id.Lit_Chars val:'\n' span_id:627) (Token id: Id.Lit_Chars val: '\ttest_expect_code 1 git merge-recursive "$c0" -- "$c6" "$c1"\n' span_id: 628 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge-recursive d/f conflict result' span_id:635))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:639) (Token id:Id.Lit_Chars val:'\n' span_id:640) (Token id:Id.Lit_Chars val:'\tgit ls-files -s >actual &&\n' span_id:641) (Token id:Id.Lit_Chars val:'\t(\n' span_id:642) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\ta"\n' span_id:643) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tb"\n' span_id:644) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:645) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o6 2\td"\n' span_id:646) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 1\td/e"\n' span_id:647) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 3\td/e"\n' span_id:648) (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:649) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:650) (Token id:Id.Lit_Chars val:'\n' span_id:651) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'reset and 3-way merge' span_id:658))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:662) (Token id:Id.Lit_Chars val:'\n' span_id:663) (Token id:Id.Lit_Chars val:'\tgit reset --hard "$c2" &&\n' span_id:664) (Token id:Id.Lit_Chars val:'\tgit read-tree -m "$c0" "$c2" "$c1"\n' span_id:665) (Token id:Id.Lit_Chars val:'\n' span_id:666) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'reset and bind merge' span_id:673))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:677) (Token id:Id.Lit_Chars val:'\n' span_id:678) (Token id:Id.Lit_Chars val:'\tgit reset --hard master &&\n' span_id:679) (Token id:Id.Lit_Chars val:'\tgit read-tree --prefix=M/ master &&\n' span_id:680) (Token id:Id.Lit_Chars val:'\tgit ls-files -s >actual &&\n' span_id:681) (Token id:Id.Lit_Chars val:'\t(\n' span_id:682) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\tM/a"\n' span_id:683) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tM/b"\n' span_id:684) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tM/c"\n' span_id:685) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\tM/d/e"\n' span_id:686) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\ta"\n' span_id:687) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tb"\n' span_id:688) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:689) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\td/e"\n' span_id:690) (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:691) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:692) (Token id:Id.Lit_Chars val:'\n' span_id:693) (Token id:Id.Lit_Chars val:'\tgit read-tree --prefix=a1/ master &&\n' span_id:694) (Token id:Id.Lit_Chars val:'\tgit ls-files -s >actual &&\n' span_id:695) (Token id:Id.Lit_Chars val:'\t(\n' span_id:696) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\tM/a"\n' span_id:697) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tM/b"\n' span_id:698) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tM/c"\n' span_id:699) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\tM/d/e"\n' span_id:700) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\ta"\n' span_id:701) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\ta1/a"\n' span_id:702) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\ta1/b"\n' span_id:703) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\ta1/c"\n' span_id:704) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\ta1/d/e"\n' span_id:705) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tb"\n' span_id:706) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:707) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\td/e"\n' span_id:708) (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:709) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:710) (Token id:Id.Lit_Chars val:'\n' span_id:711) (Token id:Id.Lit_Chars val:'\tgit read-tree --prefix=z/ master &&\n' span_id:712) (Token id:Id.Lit_Chars val:'\tgit ls-files -s >actual &&\n' span_id:713) (Token id:Id.Lit_Chars val:'\t(\n' span_id:714) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\tM/a"\n' span_id:715) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tM/b"\n' span_id:716) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tM/c"\n' span_id:717) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\tM/d/e"\n' span_id:718) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\ta"\n' span_id:719) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\ta1/a"\n' span_id:720) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\ta1/b"\n' span_id:721) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\ta1/c"\n' span_id:722) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\ta1/d/e"\n' span_id:723) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tb"\n' span_id:724) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:725) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\td/e"\n' span_id:726) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\tz/a"\n' span_id:727) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tz/b"\n' span_id:728) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tz/c"\n' span_id:729) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\tz/d/e"\n' span_id:730) (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:731) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:732) (Token id:Id.Lit_Chars val:'\n' span_id:733) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'merge-recursive w/ empty work tree - ours has rename' span_id: 740 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:744) (Token id:Id.Lit_Chars val:'\t(\n' span_id:745) (Token id:Id.Lit_Chars val:'\t\tGIT_WORK_TREE="$PWD/ours-has-rename-work" &&\n' span_id:746) (Token id:Id.Lit_Chars val:'\t\texport GIT_WORK_TREE &&\n' span_id:747) (Token id:Id.Lit_Chars val:'\t\tGIT_INDEX_FILE="$PWD/ours-has-rename-index" &&\n' span_id:748) (Token id:Id.Lit_Chars val:'\t\texport GIT_INDEX_FILE &&\n' span_id:749) (Token id:Id.Lit_Chars val:'\t\tmkdir "$GIT_WORK_TREE" &&\n' span_id:750) (Token id:Id.Lit_Chars val:'\t\tgit read-tree -i -m $c7 &&\n' span_id:751) (Token id:Id.Lit_Chars val:'\t\tgit update-index --ignore-missing --refresh &&\n' span_id:752) (Token id: Id.Lit_Chars val: '\t\tgit merge-recursive $c0 -- $c7 $c3 &&\n' span_id: 753 ) (Token id:Id.Lit_Chars val:'\t\tgit ls-files -s >actual-files\n' span_id:754) (Token id:Id.Lit_Chars val:'\t) 2>actual-err &&\n' span_id:755) (Token id:Id.Lit_Chars val:'\t>expected-err &&\n' span_id:756) (Token id:Id.Lit_Chars val:'\tcat >expected-files <<-EOF &&\n' span_id:757) (Token id:Id.Lit_Chars val:'\t100644 $o3 0\tb/c\n' span_id:758) (Token id:Id.Lit_Chars val:'\t100644 $o0 0\tc\n' span_id:759) (Token id:Id.Lit_Chars val:'\t100644 $o0 0\td/e\n' span_id:760) (Token id:Id.Lit_Chars val:'\t100644 $o0 0\te\n' span_id:761) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:762) (Token id: Id.Lit_Chars val: '\ttest_cmp expected-files actual-files &&\n' span_id: 763 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected-err actual-err\n' span_id:764) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'merge-recursive w/ empty work tree - theirs has rename' span_id: 771 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:775) (Token id:Id.Lit_Chars val:'\t(\n' span_id:776) (Token id:Id.Lit_Chars val:'\t\tGIT_WORK_TREE="$PWD/theirs-has-rename-work" &&\n' span_id:777) (Token id:Id.Lit_Chars val:'\t\texport GIT_WORK_TREE &&\n' span_id:778) (Token id:Id.Lit_Chars val:'\t\tGIT_INDEX_FILE="$PWD/theirs-has-rename-index" &&\n' span_id:779) (Token id:Id.Lit_Chars val:'\t\texport GIT_INDEX_FILE &&\n' span_id:780) (Token id:Id.Lit_Chars val:'\t\tmkdir "$GIT_WORK_TREE" &&\n' span_id:781) (Token id:Id.Lit_Chars val:'\t\tgit read-tree -i -m $c3 &&\n' span_id:782) (Token id:Id.Lit_Chars val:'\t\tgit update-index --ignore-missing --refresh &&\n' span_id:783) (Token id: Id.Lit_Chars val: '\t\tgit merge-recursive $c0 -- $c3 $c7 &&\n' span_id: 784 ) (Token id:Id.Lit_Chars val:'\t\tgit ls-files -s >actual-files\n' span_id:785) (Token id:Id.Lit_Chars val:'\t) 2>actual-err &&\n' span_id:786) (Token id:Id.Lit_Chars val:'\t>expected-err &&\n' span_id:787) (Token id:Id.Lit_Chars val:'\tcat >expected-files <<-EOF &&\n' span_id:788) (Token id:Id.Lit_Chars val:'\t100644 $o3 0\tb/c\n' span_id:789) (Token id:Id.Lit_Chars val:'\t100644 $o0 0\tc\n' span_id:790) (Token id:Id.Lit_Chars val:'\t100644 $o0 0\td/e\n' span_id:791) (Token id:Id.Lit_Chars val:'\t100644 $o0 0\te\n' span_id:792) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:793) (Token id: Id.Lit_Chars val: '\ttest_cmp expected-files actual-files &&\n' span_id: 794 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected-err actual-err\n' span_id:795) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge removes empty directories' span_id:802))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:806) (Token id:Id.Lit_Chars val:'\n' span_id:807) (Token id:Id.Lit_Chars val:'\tgit reset --hard master &&\n' span_id:808) (Token id:Id.Lit_Chars val:'\tgit checkout -b rm &&\n' span_id:809) (Token id:Id.Lit_Chars val:'\tgit rm d/e &&\n' span_id:810) (Token id:Id.Lit_Chars val:'\tgit commit -mremoved-d/e &&\n' span_id:811) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:812) (Token id:Id.Lit_Chars val:'\tgit merge -s recursive rm &&\n' span_id:813) (Token id:Id.Lit_Chars val:'\ttest_must_fail test -d d\n' span_id:814) ) } ) (C {(test_expect_failure)} {(SQ (Token id:Id.Lit_Chars val:'merge-recursive simple w/submodule' span_id:821))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:825) (Token id:Id.Lit_Chars val:'\n' span_id:826) (Token id:Id.Lit_Chars val:'\tgit checkout submod &&\n' span_id:827) (Token id:Id.Lit_Chars val:'\tgit merge remove\n' span_id:828) ) } ) (C {(test_expect_failure)} {(SQ (Token id:Id.Lit_Chars val:'merge-recursive simple w/submodule result' span_id:835))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:839) (Token id:Id.Lit_Chars val:'\n' span_id:840) (Token id:Id.Lit_Chars val:'\tgit ls-files -s >actual &&\n' span_id:841) (Token id:Id.Lit_Chars val:'\t(\n' span_id:842) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o5 0\ta"\n' span_id:843) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:844) (Token id:Id.Lit_Chars val:'\t\techo "160000 $c1 0\td"\n' span_id:845) (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:846) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:847) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge-recursive copy vs. rename' span_id:854))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:858) (Token id:Id.Lit_Chars val:'\tgit checkout -f copy &&\n' span_id:859) (Token id:Id.Lit_Chars val:'\tgit merge rename &&\n' span_id:860) (Token id: Id.Lit_Chars val: '\t( git ls-tree -r HEAD && git ls-files -s ) >actual &&\n' span_id: 861 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:862) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tb"\n' span_id:863) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tc"\n' span_id:864) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\td/e"\n' span_id:865) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\te"\n' span_id:866) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tb"\n' span_id:867) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:868) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\td/e"\n' span_id:869) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\te"\n' span_id:870) (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:871) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:872) ) } ) (C {(test_expect_failure)} {(SQ (Token id:Id.Lit_Chars val:'merge-recursive rename vs. rename/symlink' span_id:879))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:883) (Token id:Id.Lit_Chars val:'\n' span_id:884) (Token id:Id.Lit_Chars val:'\tgit checkout -f rename &&\n' span_id:885) (Token id:Id.Lit_Chars val:'\tgit merge rename-ln &&\n' span_id:886) (Token id: Id.Lit_Chars val: '\t( git ls-tree -r HEAD ; git ls-files -s ) >actual &&\n' span_id: 887 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:888) (Token id:Id.Lit_Chars val:'\t\techo "120000 blob $oln\ta"\n' span_id:889) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tb"\n' span_id:890) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tc"\n' span_id:891) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\td/e"\n' span_id:892) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\te"\n' span_id:893) (Token id:Id.Lit_Chars val:'\t\techo "120000 $oln 0\ta"\n' span_id:894) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tb"\n' span_id:895) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:896) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\td/e"\n' span_id:897) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\te"\n' span_id:898) (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:899) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:900) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merging with triple rename across D/F conflict' span_id:907))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:911) (Token id:Id.Lit_Chars val:'\tgit reset --hard HEAD &&\n' span_id:912) (Token id:Id.Lit_Chars val:'\tgit checkout -b main &&\n' span_id:913) (Token id:Id.Lit_Chars val:'\tgit rm -rf . &&\n' span_id:914) (Token id:Id.Lit_Chars val:'\n' span_id:915) (Token id:Id.Lit_Chars val:'\techo "just a file" >sub1 &&\n' span_id:916) (Token id:Id.Lit_Chars val:'\tmkdir -p sub2 &&\n' span_id:917) (Token id:Id.Lit_Chars val:'\techo content1 >sub2/file1 &&\n' span_id:918) (Token id:Id.Lit_Chars val:'\techo content2 >sub2/file2 &&\n' span_id:919) (Token id:Id.Lit_Chars val:'\techo content3 >sub2/file3 &&\n' span_id:920) (Token id:Id.Lit_Chars val:'\tmkdir simple &&\n' span_id:921) (Token id:Id.Lit_Chars val:'\techo base >simple/bar &&\n' span_id:922) (Token id:Id.Lit_Chars val:'\tgit add -A &&\n' span_id:923) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:924) (Token id:Id.Lit_Chars val:'\tgit commit -m base &&\n' span_id:925) (Token id:Id.Lit_Chars val:'\n' span_id:926) (Token id:Id.Lit_Chars val:'\tgit checkout -b other &&\n' span_id:927) (Token id:Id.Lit_Chars val:'\techo more >>simple/bar &&\n' span_id:928) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:929) (Token id: Id.Lit_Chars val: '\tgit commit -a -m changesimplefile &&\n' span_id: 930 ) (Token id:Id.Lit_Chars val:'\n' span_id:931) (Token id:Id.Lit_Chars val:'\tgit checkout main &&\n' span_id:932) (Token id:Id.Lit_Chars val:'\tgit rm sub1 &&\n' span_id:933) (Token id:Id.Lit_Chars val:'\tgit mv sub2 sub1 &&\n' span_id:934) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:935) (Token id:Id.Lit_Chars val:'\tgit commit -m changefiletodir &&\n' span_id:936) (Token id:Id.Lit_Chars val:'\n' span_id:937) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:938) (Token id:Id.Lit_Chars val:'\tgit merge other\n' span_id:939) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'merge-recursive remembers the names of all base trees' span_id: 946 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:950) (Token id:Id.Lit_Chars val:'\tgit reset --hard HEAD &&\n' span_id:951) (Token id:Id.Lit_Chars val:'\n' span_id:952) (Token id: Id.Lit_Chars val: '\t# more trees than static slots used by oid_to_hex()\n' span_id: 953 ) (Token id:Id.Lit_Chars val:'\tfor commit in $c0 $c2 $c4 $c5 $c6 $c7\n' span_id:954) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:955) (Token id:Id.Lit_Chars val:'\t\tgit rev-parse "$commit^{tree}"\n' span_id:956) (Token id:Id.Lit_Chars val:'\tdone >trees &&\n' span_id:957) (Token id:Id.Lit_Chars val:'\n' span_id:958) (Token id: Id.Lit_Chars val: '\t# ignore the return code -- it only fails because the input is weird\n' span_id: 959 ) (Token id: Id.Lit_Chars val: '\ttest_must_fail git -c merge.verbosity=5 merge-recursive $(cat trees) -- $c1 $c3 >out &&\n' span_id: 960 ) (Token id:Id.Lit_Chars val:'\n' span_id:961) (Token id: Id.Lit_Chars val: '\t# merge-recursive prints in reverse order, but we do not care\n' span_id: 962 ) (Token id:Id.Lit_Chars val:'\tsort <trees >expect &&\n' span_id:963) (Token id: Id.Lit_Chars val: '\tsed -n "s/^virtual //p" out | sort >actual &&\n' span_id: 964 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:965) ) } ) (C {(test_done)}) ] )