(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: 'recursive merge corner cases involving criss-cross merges' span_id: 6 ) ) } spids: [4] ) ] ) (C {(.)} {(./test-lib.sh)}) (command.ShFunction name: get_clean_checkout body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (C {(git)} {(reset)} {(--hard)}) (C {(git)} {(clean)} {(-fdqx)}) (C {(git)} {(checkout)} {(DQ ($ Id.VSub_Number '$1'))}) ] ) ] ) ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'setup basic criss-cross + rename with no modifications' span_id: 83 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:87) (Token id:Id.Lit_Chars val:'\tten="0 1 2 3 4 5 6 7 8 9" &&\n' span_id:88) (Token id:Id.Lit_Chars val:'\tfor i in $ten\n' span_id:89) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:90) (Token id:Id.Lit_Chars val:'\t\techo line $i in a sample file\n' span_id:91) (Token id:Id.Lit_Chars val:'\tdone >one &&\n' span_id:92) (Token id:Id.Lit_Chars val:'\tfor i in $ten\n' span_id:93) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:94) (Token id:Id.Lit_Chars val:'\t\techo line $i in another sample file\n' span_id:95) (Token id:Id.Lit_Chars val:'\tdone >two &&\n' span_id:96) (Token id:Id.Lit_Chars val:'\tgit add one two &&\n' span_id:97) (Token id: Id.Lit_Chars val: '\ttest_tick && git commit -m initial &&\n' span_id: 98 ) (Token id:Id.Lit_Chars val:'\n' span_id:99) (Token id:Id.Lit_Chars val:'\tgit branch L1 &&\n' span_id:100) (Token id:Id.Lit_Chars val:'\tgit checkout -b R1 &&\n' span_id:101) (Token id:Id.Lit_Chars val:'\tgit mv one three &&\n' span_id:102) (Token id:Id.Lit_Chars val:'\ttest_tick && git commit -m R1 &&\n' span_id:103) (Token id:Id.Lit_Chars val:'\n' span_id:104) (Token id:Id.Lit_Chars val:'\tgit checkout L1 &&\n' span_id:105) (Token id:Id.Lit_Chars val:'\tgit mv two three &&\n' span_id:106) (Token id:Id.Lit_Chars val:'\ttest_tick && git commit -m L1 &&\n' span_id:107) (Token id:Id.Lit_Chars val:'\n' span_id:108) (Token id:Id.Lit_Chars val:'\tgit checkout L1^0 &&\n' span_id:109) (Token id: Id.Lit_Chars val: '\ttest_tick && git merge -s ours R1 &&\n' span_id: 110 ) (Token id:Id.Lit_Chars val:'\tgit tag L2 &&\n' span_id:111) (Token id:Id.Lit_Chars val:'\n' span_id:112) (Token id:Id.Lit_Chars val:'\tgit checkout R1^0 &&\n' span_id:113) (Token id: Id.Lit_Chars val: '\ttest_tick && git merge -s ours L1 &&\n' span_id: 114 ) (Token id:Id.Lit_Chars val:'\tgit tag R2\n' span_id:115) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'merge simple rename+criss-cross with no modifications' span_id: 122 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:126) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:127) (Token id:Id.Lit_Chars val:'\tgit checkout L2^0 &&\n' span_id:128) (Token id:Id.Lit_Chars val:'\n' span_id:129) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge -s recursive R2^0 &&\n' span_id:130) (Token id:Id.Lit_Chars val:'\n' span_id:131) (Token id:Id.Lit_Chars val:'\ttest 2 = $(git ls-files -s | wc -l) &&\n' span_id:132) (Token id: Id.Lit_Chars val: '\ttest 2 = $(git ls-files -u | wc -l) &&\n' span_id: 133 ) (Token id:Id.Lit_Chars val:'\ttest 2 = $(git ls-files -o | wc -l) &&\n' span_id:134) (Token id:Id.Lit_Chars val:'\n' span_id:135) (Token id: Id.Lit_Chars val: '\ttest $(git rev-parse :2:three) = $(git rev-parse L2:three) &&\n' span_id: 136 ) (Token id: Id.Lit_Chars val: '\ttest $(git rev-parse :3:three) = $(git rev-parse R2:three) &&\n' span_id: 137 ) (Token id:Id.Lit_Chars val:'\n' span_id:138) (Token id: Id.Lit_Chars val: '\ttest $(git rev-parse L2:three) = $(git hash-object three~HEAD) &&\n' span_id: 139 ) (Token id: Id.Lit_Chars val: '\ttest $(git rev-parse R2:three) = $(git hash-object three~R2^0)\n' span_id: 140 ) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'setup criss-cross + rename merges with basic modification' span_id: 181 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:185) (Token id:Id.Lit_Chars val:'\tgit rm -rf . &&\n' span_id:186) (Token id:Id.Lit_Chars val:'\tgit clean -fdqx &&\n' span_id:187) (Token id:Id.Lit_Chars val:'\trm -rf .git &&\n' span_id:188) (Token id:Id.Lit_Chars val:'\tgit init &&\n' span_id:189) (Token id:Id.Lit_Chars val:'\n' span_id:190) (Token id:Id.Lit_Chars val:'\tten="0 1 2 3 4 5 6 7 8 9" &&\n' span_id:191) (Token id:Id.Lit_Chars val:'\tfor i in $ten\n' span_id:192) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:193) (Token id:Id.Lit_Chars val:'\t\techo line $i in a sample file\n' span_id:194) (Token id:Id.Lit_Chars val:'\tdone >one &&\n' span_id:195) (Token id:Id.Lit_Chars val:'\tfor i in $ten\n' span_id:196) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:197) (Token id:Id.Lit_Chars val:'\t\techo line $i in another sample file\n' span_id:198) (Token id:Id.Lit_Chars val:'\tdone >two &&\n' span_id:199) (Token id:Id.Lit_Chars val:'\tgit add one two &&\n' span_id:200) (Token id: Id.Lit_Chars val: '\ttest_tick && git commit -m initial &&\n' span_id: 201 ) (Token id:Id.Lit_Chars val:'\n' span_id:202) (Token id:Id.Lit_Chars val:'\tgit branch L1 &&\n' span_id:203) (Token id:Id.Lit_Chars val:'\tgit checkout -b R1 &&\n' span_id:204) (Token id:Id.Lit_Chars val:'\tgit mv one three &&\n' span_id:205) (Token id:Id.Lit_Chars val:'\techo more >>two &&\n' span_id:206) (Token id:Id.Lit_Chars val:'\tgit add two &&\n' span_id:207) (Token id:Id.Lit_Chars val:'\ttest_tick && git commit -m R1 &&\n' span_id:208) (Token id:Id.Lit_Chars val:'\n' span_id:209) (Token id:Id.Lit_Chars val:'\tgit checkout L1 &&\n' span_id:210) (Token id:Id.Lit_Chars val:'\tgit mv two three &&\n' span_id:211) (Token id:Id.Lit_Chars val:'\ttest_tick && git commit -m L1 &&\n' span_id:212) (Token id:Id.Lit_Chars val:'\n' span_id:213) (Token id:Id.Lit_Chars val:'\tgit checkout L1^0 &&\n' span_id:214) (Token id: Id.Lit_Chars val: '\ttest_tick && git merge -s ours R1 &&\n' span_id: 215 ) (Token id:Id.Lit_Chars val:'\tgit tag L2 &&\n' span_id:216) (Token id:Id.Lit_Chars val:'\n' span_id:217) (Token id:Id.Lit_Chars val:'\tgit checkout R1^0 &&\n' span_id:218) (Token id: Id.Lit_Chars val: '\ttest_tick && git merge -s ours L1 &&\n' span_id: 219 ) (Token id:Id.Lit_Chars val:'\tgit tag R2\n' span_id:220) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'merge criss-cross + rename merges with basic modification' span_id: 227 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:231) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:232) (Token id:Id.Lit_Chars val:'\tgit checkout L2^0 &&\n' span_id:233) (Token id:Id.Lit_Chars val:'\n' span_id:234) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge -s recursive R2^0 &&\n' span_id:235) (Token id:Id.Lit_Chars val:'\n' span_id:236) (Token id:Id.Lit_Chars val:'\ttest 2 = $(git ls-files -s | wc -l) &&\n' span_id:237) (Token id: Id.Lit_Chars val: '\ttest 2 = $(git ls-files -u | wc -l) &&\n' span_id: 238 ) (Token id:Id.Lit_Chars val:'\ttest 2 = $(git ls-files -o | wc -l) &&\n' span_id:239) (Token id:Id.Lit_Chars val:'\n' span_id:240) (Token id: Id.Lit_Chars val: '\ttest $(git rev-parse :2:three) = $(git rev-parse L2:three) &&\n' span_id: 241 ) (Token id: Id.Lit_Chars val: '\ttest $(git rev-parse :3:three) = $(git rev-parse R2:three) &&\n' span_id: 242 ) (Token id:Id.Lit_Chars val:'\n' span_id:243) (Token id: Id.Lit_Chars val: '\ttest $(git rev-parse L2:three) = $(git hash-object three~HEAD) &&\n' span_id: 244 ) (Token id: Id.Lit_Chars val: '\ttest $(git rev-parse R2:three) = $(git hash-object three~R2^0)\n' span_id: 245 ) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'setup differently handled merges of rename/add conflict' span_id: 310 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:314) (Token id:Id.Lit_Chars val:'\tgit rm -rf . &&\n' span_id:315) (Token id:Id.Lit_Chars val:'\tgit clean -fdqx &&\n' span_id:316) (Token id:Id.Lit_Chars val:'\trm -rf .git &&\n' span_id:317) (Token id:Id.Lit_Chars val:'\tgit init &&\n' span_id:318) (Token id:Id.Lit_Chars val:'\n' span_id:319) (Token id: Id.Lit_Chars val: '\tprintf "0\\n1\\n2\\n3\\n4\\n5\\n6\\n7\\n8\\n9\\n" >a &&\n' span_id: 320 ) (Token id:Id.Lit_Chars val:'\tgit add a &&\n' span_id:321) (Token id:Id.Lit_Chars val:'\ttest_tick && git commit -m A &&\n' span_id:322) (Token id:Id.Lit_Chars val:'\n' span_id:323) (Token id:Id.Lit_Chars val:'\tgit branch B &&\n' span_id:324) (Token id:Id.Lit_Chars val:'\tgit checkout -b C &&\n' span_id:325) (Token id:Id.Lit_Chars val:'\techo 10 >>a &&\n' span_id:326) (Token id:Id.Lit_Chars val:'\techo "other content" >>new_a &&\n' span_id:327) (Token id:Id.Lit_Chars val:'\tgit add a new_a &&\n' span_id:328) (Token id:Id.Lit_Chars val:'\ttest_tick && git commit -m C &&\n' span_id:329) (Token id:Id.Lit_Chars val:'\n' span_id:330) (Token id:Id.Lit_Chars val:'\tgit checkout B &&\n' span_id:331) (Token id:Id.Lit_Chars val:'\tgit mv a new_a &&\n' span_id:332) (Token id:Id.Lit_Chars val:'\ttest_tick && git commit -m B &&\n' span_id:333) (Token id:Id.Lit_Chars val:'\n' span_id:334) (Token id:Id.Lit_Chars val:'\tgit checkout B^0 &&\n' span_id:335) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge C &&\n' span_id:336) (Token id:Id.Lit_Chars val:'\tgit clean -f &&\n' span_id:337) (Token id:Id.Lit_Chars val:'\ttest_tick && git commit -m D &&\n' span_id:338) (Token id:Id.Lit_Chars val:'\tgit tag D &&\n' span_id:339) (Token id:Id.Lit_Chars val:'\n' span_id:340) (Token id:Id.Lit_Chars val:'\tgit checkout C^0 &&\n' span_id:341) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge B &&\n' span_id:342) (Token id:Id.Lit_Chars val:'\trm new_a~HEAD new_a &&\n' span_id:343) (Token id: Id.Lit_Chars val: '\tprintf "Incorrectly merged content" >>new_a &&\n' span_id: 344 ) (Token id:Id.Lit_Chars val:'\tgit add -u &&\n' span_id:345) (Token id:Id.Lit_Chars val:'\ttest_tick && git commit -m E &&\n' span_id:346) (Token id:Id.Lit_Chars val:'\tgit tag E\n' span_id:347) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git detects differently handled merges conflict' span_id:354))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:358) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:359) (Token id:Id.Lit_Chars val:'\tgit checkout D^0 &&\n' span_id:360) (Token id:Id.Lit_Chars val:'\n' span_id:361) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge -s recursive E^0 &&\n' span_id:362) (Token id:Id.Lit_Chars val:'\n' span_id:363) (Token id:Id.Lit_Chars val:'\ttest 3 = $(git ls-files -s | wc -l) &&\n' span_id:364) (Token id: Id.Lit_Chars val: '\ttest 3 = $(git ls-files -u | wc -l) &&\n' span_id: 365 ) (Token id:Id.Lit_Chars val:'\ttest 0 = $(git ls-files -o | wc -l) &&\n' span_id:366) (Token id:Id.Lit_Chars val:'\n' span_id:367) (Token id: Id.Lit_Chars val: '\ttest $(git rev-parse :2:new_a) = $(git rev-parse D:new_a) &&\n' span_id: 368 ) (Token id: Id.Lit_Chars val: '\ttest $(git rev-parse :3:new_a) = $(git rev-parse E:new_a) &&\n' span_id: 369 ) (Token id:Id.Lit_Chars val:'\n' span_id:370) (Token id:Id.Lit_Chars val:'\tgit cat-file -p B:new_a >>merged &&\n' span_id:371) (Token id:Id.Lit_Chars val:'\tgit cat-file -p C:new_a >>merge-me &&\n' span_id:372) (Token id:Id.Lit_Chars val:'\t>empty &&\n' span_id:373) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge-file \\\n' span_id:374) (Token id:Id.Lit_Chars val:'\t\t-L "Temporary merge branch 2" \\\n' span_id:375) (Token id:Id.Lit_Chars val:'\t\t-L "" \\\n' span_id:376) (Token id:Id.Lit_Chars val:'\t\t-L "Temporary merge branch 1" \\\n' span_id:377) (Token id:Id.Lit_Chars val:'\t\tmerged empty merge-me &&\n' span_id:378) (Token id: Id.Lit_Chars val: '\tsed -e "s/^\\([<=>]\\)/\\1\\1\\1/" merged >merged-internal &&\n' span_id: 379 ) (Token id: Id.Lit_Chars val: '\ttest $(git rev-parse :1:new_a) = $(git hash-object merged-internal)\n' span_id: 380 ) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'setup criss-cross + modify/delete resolved differently' span_id: 442 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:446) (Token id:Id.Lit_Chars val:'\tgit rm -rf . &&\n' span_id:447) (Token id:Id.Lit_Chars val:'\tgit clean -fdqx &&\n' span_id:448) (Token id:Id.Lit_Chars val:'\trm -rf .git &&\n' span_id:449) (Token id:Id.Lit_Chars val:'\tgit init &&\n' span_id:450) (Token id:Id.Lit_Chars val:'\n' span_id:451) (Token id:Id.Lit_Chars val:'\techo A >file &&\n' span_id:452) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:453) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:454) (Token id:Id.Lit_Chars val:'\tgit commit -m A &&\n' span_id:455) (Token id:Id.Lit_Chars val:'\n' span_id:456) (Token id:Id.Lit_Chars val:'\tgit branch B &&\n' span_id:457) (Token id:Id.Lit_Chars val:'\tgit checkout -b C &&\n' span_id:458) (Token id:Id.Lit_Chars val:'\tgit rm file &&\n' span_id:459) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:460) (Token id:Id.Lit_Chars val:'\tgit commit -m C &&\n' span_id:461) (Token id:Id.Lit_Chars val:'\n' span_id:462) (Token id:Id.Lit_Chars val:'\tgit checkout B &&\n' span_id:463) (Token id:Id.Lit_Chars val:'\techo B >file &&\n' span_id:464) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:465) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:466) (Token id:Id.Lit_Chars val:'\tgit commit -m B &&\n' span_id:467) (Token id:Id.Lit_Chars val:'\n' span_id:468) (Token id:Id.Lit_Chars val:'\tgit checkout B^0 &&\n' span_id:469) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge C &&\n' span_id:470) (Token id:Id.Lit_Chars val:'\techo B >file &&\n' span_id:471) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:472) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:473) (Token id:Id.Lit_Chars val:'\tgit commit -m D &&\n' span_id:474) (Token id:Id.Lit_Chars val:'\tgit tag D &&\n' span_id:475) (Token id:Id.Lit_Chars val:'\n' span_id:476) (Token id:Id.Lit_Chars val:'\tgit checkout C^0 &&\n' span_id:477) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge B &&\n' span_id:478) (Token id:Id.Lit_Chars val:'\tgit rm file &&\n' span_id:479) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:480) (Token id:Id.Lit_Chars val:'\tgit commit -m E &&\n' span_id:481) (Token id:Id.Lit_Chars val:'\tgit tag E\n' span_id:482) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'git detects conflict merging criss-cross+modify/delete' span_id: 489 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:493) (Token id:Id.Lit_Chars val:'\tgit checkout D^0 &&\n' span_id:494) (Token id:Id.Lit_Chars val:'\n' span_id:495) (Token id: Id.Lit_Chars val: '\ttest_must_fail git merge -s recursive E^0 &&\n' span_id: 496 ) (Token id:Id.Lit_Chars val:'\n' span_id:497) (Token id: Id.Lit_Chars val: '\ttest 2 -eq $(git ls-files -s | wc -l) &&\n' span_id: 498 ) (Token id:Id.Lit_Chars val:'\ttest 2 -eq $(git ls-files -u | wc -l) &&\n' span_id:499) (Token id:Id.Lit_Chars val:'\n' span_id:500) (Token id: Id.Lit_Chars val: '\ttest $(git rev-parse :1:file) = $(git rev-parse master:file) &&\n' span_id: 501 ) (Token id:Id.Lit_Chars val:'\ttest $(git rev-parse :2:file) = $(git rev-parse B:file)\n' span_id:502) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'git detects conflict merging criss-cross+modify/delete, reverse direction' span_id: 509 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:513) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:514) (Token id:Id.Lit_Chars val:'\tgit checkout E^0 &&\n' span_id:515) (Token id:Id.Lit_Chars val:'\n' span_id:516) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge -s recursive D^0 &&\n' span_id:517) (Token id:Id.Lit_Chars val:'\n' span_id:518) (Token id:Id.Lit_Chars val:'\ttest 2 -eq $(git ls-files -s | wc -l) &&\n' span_id:519) (Token id: Id.Lit_Chars val: '\ttest 2 -eq $(git ls-files -u | wc -l) &&\n' span_id: 520 ) (Token id:Id.Lit_Chars val:'\n' span_id:521) (Token id: Id.Lit_Chars val: '\ttest $(git rev-parse :1:file) = $(git rev-parse master:file) &&\n' span_id: 522 ) (Token id:Id.Lit_Chars val:'\ttest $(git rev-parse :3:file) = $(git rev-parse B:file)\n' span_id:523) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'setup differently handled merges of directory/file conflict' span_id: 636 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:640) (Token id:Id.Lit_Chars val:'\tgit rm -rf . &&\n' span_id:641) (Token id:Id.Lit_Chars val:'\tgit clean -fdqx &&\n' span_id:642) (Token id:Id.Lit_Chars val:'\trm -rf .git &&\n' span_id:643) (Token id:Id.Lit_Chars val:'\tgit init &&\n' span_id:644) (Token id:Id.Lit_Chars val:'\n' span_id:645) (Token id:Id.Lit_Chars val:'\t>ignore-me &&\n' span_id:646) (Token id:Id.Lit_Chars val:'\tgit add ignore-me &&\n' span_id:647) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:648) (Token id:Id.Lit_Chars val:'\tgit commit -m A &&\n' span_id:649) (Token id:Id.Lit_Chars val:'\tgit tag A &&\n' span_id:650) (Token id:Id.Lit_Chars val:'\n' span_id:651) (Token id:Id.Lit_Chars val:'\tgit branch B &&\n' span_id:652) (Token id:Id.Lit_Chars val:'\tgit checkout -b C &&\n' span_id:653) (Token id:Id.Lit_Chars val:'\tmkdir a &&\n' span_id:654) (Token id:Id.Lit_Chars val:'\techo 10 >a/file &&\n' span_id:655) (Token id:Id.Lit_Chars val:'\tgit add a/file &&\n' span_id:656) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:657) (Token id:Id.Lit_Chars val:'\tgit commit -m C &&\n' span_id:658) (Token id:Id.Lit_Chars val:'\n' span_id:659) (Token id:Id.Lit_Chars val:'\tgit checkout B &&\n' span_id:660) (Token id:Id.Lit_Chars val:'\techo 5 >a &&\n' span_id:661) (Token id:Id.Lit_Chars val:'\tgit add a &&\n' span_id:662) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:663) (Token id:Id.Lit_Chars val:'\tgit commit -m B &&\n' span_id:664) (Token id:Id.Lit_Chars val:'\n' span_id:665) (Token id:Id.Lit_Chars val:'\tgit checkout B^0 &&\n' span_id:666) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge C &&\n' span_id:667) (Token id:Id.Lit_Chars val:'\tgit clean -f &&\n' span_id:668) (Token id:Id.Lit_Chars val:'\trm -rf a/ &&\n' span_id:669) (Token id:Id.Lit_Chars val:'\techo 5 >a &&\n' span_id:670) (Token id:Id.Lit_Chars val:'\tgit add a &&\n' span_id:671) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:672) (Token id:Id.Lit_Chars val:'\tgit commit -m D &&\n' span_id:673) (Token id:Id.Lit_Chars val:'\tgit tag D &&\n' span_id:674) (Token id:Id.Lit_Chars val:'\n' span_id:675) (Token id:Id.Lit_Chars val:'\tgit checkout C^0 &&\n' span_id:676) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge B &&\n' span_id:677) (Token id:Id.Lit_Chars val:'\tgit clean -f &&\n' span_id:678) (Token id:Id.Lit_Chars val:'\tgit rm --cached a &&\n' span_id:679) (Token id:Id.Lit_Chars val:'\techo 10 >a/file &&\n' span_id:680) (Token id:Id.Lit_Chars val:'\tgit add a/file &&\n' span_id:681) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:682) (Token id:Id.Lit_Chars val:'\tgit commit -m E1 &&\n' span_id:683) (Token id:Id.Lit_Chars val:'\tgit tag E1 &&\n' span_id:684) (Token id:Id.Lit_Chars val:'\n' span_id:685) (Token id:Id.Lit_Chars val:'\tgit checkout C^0 &&\n' span_id:686) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge B &&\n' span_id:687) (Token id:Id.Lit_Chars val:'\tgit clean -f &&\n' span_id:688) (Token id:Id.Lit_Chars val:'\tgit rm --cached a &&\n' span_id:689) (Token id:Id.Lit_Chars val:'\tprintf "10\\n11\\n" >a/file &&\n' span_id:690) (Token id:Id.Lit_Chars val:'\tgit add a/file &&\n' span_id:691) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:692) (Token id:Id.Lit_Chars val:'\tgit commit -m E2 &&\n' span_id:693) (Token id:Id.Lit_Chars val:'\tgit tag E2\n' span_id:694) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'merge of D & E1 fails but has appropriate contents' span_id: 701 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:705) (Token id:Id.Lit_Chars val:'\tget_clean_checkout D^0 &&\n' span_id:706) (Token id:Id.Lit_Chars val:'\n' span_id:707) (Token id: Id.Lit_Chars val: '\ttest_must_fail git merge -s recursive E1^0 &&\n' span_id: 708 ) (Token id:Id.Lit_Chars val:'\n' span_id:709) (Token id: Id.Lit_Chars val: '\ttest 2 -eq $(git ls-files -s | wc -l) &&\n' span_id: 710 ) (Token id:Id.Lit_Chars val:'\ttest 1 -eq $(git ls-files -u | wc -l) &&\n' span_id:711) (Token id: Id.Lit_Chars val: '\ttest 0 -eq $(git ls-files -o | wc -l) &&\n' span_id: 712 ) (Token id:Id.Lit_Chars val:'\n' span_id:713) (Token id: Id.Lit_Chars val: '\ttest $(git rev-parse :0:ignore-me) = $(git rev-parse A:ignore-me) &&\n' span_id: 714 ) (Token id:Id.Lit_Chars val:'\ttest $(git rev-parse :2:a) = $(git rev-parse B:a)\n' span_id:715) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'merge of E1 & D fails but has appropriate contents' span_id: 722 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:726) (Token id:Id.Lit_Chars val:'\tget_clean_checkout E1^0 &&\n' span_id:727) (Token id:Id.Lit_Chars val:'\n' span_id:728) (Token id: Id.Lit_Chars val: '\ttest_must_fail git merge -s recursive D^0 &&\n' span_id: 729 ) (Token id:Id.Lit_Chars val:'\n' span_id:730) (Token id: Id.Lit_Chars val: '\ttest 2 -eq $(git ls-files -s | wc -l) &&\n' span_id: 731 ) (Token id:Id.Lit_Chars val:'\ttest 1 -eq $(git ls-files -u | wc -l) &&\n' span_id:732) (Token id: Id.Lit_Chars val: '\ttest 0 -eq $(git ls-files -o | wc -l) &&\n' span_id: 733 ) (Token id:Id.Lit_Chars val:'\n' span_id:734) (Token id: Id.Lit_Chars val: '\ttest $(git rev-parse :0:ignore-me) = $(git rev-parse A:ignore-me) &&\n' span_id: 735 ) (Token id:Id.Lit_Chars val:'\ttest $(git rev-parse :3:a) = $(git rev-parse B:a)\n' span_id:736) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'merge of D & E2 fails but has appropriate contents' span_id: 743 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:747) (Token id:Id.Lit_Chars val:'\tget_clean_checkout D^0 &&\n' span_id:748) (Token id:Id.Lit_Chars val:'\n' span_id:749) (Token id: Id.Lit_Chars val: '\ttest_must_fail git merge -s recursive E2^0 &&\n' span_id: 750 ) (Token id:Id.Lit_Chars val:'\n' span_id:751) (Token id: Id.Lit_Chars val: '\ttest 4 -eq $(git ls-files -s | wc -l) &&\n' span_id: 752 ) (Token id:Id.Lit_Chars val:'\ttest 3 -eq $(git ls-files -u | wc -l) &&\n' span_id:753) (Token id: Id.Lit_Chars val: '\ttest 1 -eq $(git ls-files -o | wc -l) &&\n' span_id: 754 ) (Token id:Id.Lit_Chars val:'\n' span_id:755) (Token id: Id.Lit_Chars val: '\ttest $(git rev-parse :2:a) = $(git rev-parse B:a) &&\n' span_id: 756 ) (Token id: Id.Lit_Chars val: '\ttest $(git rev-parse :3:a/file) = $(git rev-parse E2:a/file) &&\n' span_id: 757 ) (Token id: Id.Lit_Chars val: '\ttest $(git rev-parse :1:a/file) = $(git rev-parse C:a/file) &&\n' span_id: 758 ) (Token id: Id.Lit_Chars val: '\ttest $(git rev-parse :0:ignore-me) = $(git rev-parse A:ignore-me) &&\n' span_id: 759 ) (Token id:Id.Lit_Chars val:'\n' span_id:760) (Token id:Id.Lit_Chars val:'\ttest -f a~HEAD\n' span_id:761) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'merge of E2 & D fails but has appropriate contents' span_id: 768 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:772) (Token id:Id.Lit_Chars val:'\tget_clean_checkout E2^0 &&\n' span_id:773) (Token id:Id.Lit_Chars val:'\n' span_id:774) (Token id: Id.Lit_Chars val: '\ttest_must_fail git merge -s recursive D^0 &&\n' span_id: 775 ) (Token id:Id.Lit_Chars val:'\n' span_id:776) (Token id: Id.Lit_Chars val: '\ttest 4 -eq $(git ls-files -s | wc -l) &&\n' span_id: 777 ) (Token id:Id.Lit_Chars val:'\ttest 3 -eq $(git ls-files -u | wc -l) &&\n' span_id:778) (Token id: Id.Lit_Chars val: '\ttest 1 -eq $(git ls-files -o | wc -l) &&\n' span_id: 779 ) (Token id:Id.Lit_Chars val:'\n' span_id:780) (Token id: Id.Lit_Chars val: '\ttest $(git rev-parse :3:a) = $(git rev-parse B:a) &&\n' span_id: 781 ) (Token id: Id.Lit_Chars val: '\ttest $(git rev-parse :2:a/file) = $(git rev-parse E2:a/file) &&\n' span_id: 782 ) (Token id: Id.Lit_Chars val: '\ttest $(git rev-parse :1:a/file) = $(git rev-parse C:a/file) &&\n' span_id: 783 ) (Token id: Id.Lit_Chars val: '\ttest $(git rev-parse :0:ignore-me) = $(git rev-parse A:ignore-me) &&\n' span_id: 784 ) (Token id:Id.Lit_Chars val:'\n' span_id:785) (Token id:Id.Lit_Chars val:'\ttest -f a~D^0\n' span_id:786) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'setup rename/rename(1to2)/modify followed by what looks like rename/rename(2to1)/modify' span_id: 908 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:912) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:913) (Token id:Id.Lit_Chars val:'\tgit rm -rf . &&\n' span_id:914) (Token id:Id.Lit_Chars val:'\tgit clean -fdqx &&\n' span_id:915) (Token id:Id.Lit_Chars val:'\trm -rf .git &&\n' span_id:916) (Token id:Id.Lit_Chars val:'\tgit init &&\n' span_id:917) (Token id:Id.Lit_Chars val:'\n' span_id:918) (Token id: Id.Lit_Chars val: '\tprintf "1\\n2\\n3\\n4\\n5\\n6\\n" >a &&\n' span_id: 919 ) (Token id:Id.Lit_Chars val:'\tgit add a &&\n' span_id:920) (Token id:Id.Lit_Chars val:'\tgit commit -m A &&\n' span_id:921) (Token id:Id.Lit_Chars val:'\tgit tag A &&\n' span_id:922) (Token id:Id.Lit_Chars val:'\n' span_id:923) (Token id:Id.Lit_Chars val:'\tgit checkout -b B A &&\n' span_id:924) (Token id:Id.Lit_Chars val:'\tgit mv a b &&\n' span_id:925) (Token id:Id.Lit_Chars val:'\techo 7 >>b &&\n' span_id:926) (Token id:Id.Lit_Chars val:'\tgit add -u &&\n' span_id:927) (Token id:Id.Lit_Chars val:'\tgit commit -m B &&\n' span_id:928) (Token id:Id.Lit_Chars val:'\n' span_id:929) (Token id:Id.Lit_Chars val:'\tgit checkout -b C A &&\n' span_id:930) (Token id:Id.Lit_Chars val:'\tgit mv a c &&\n' span_id:931) (Token id:Id.Lit_Chars val:'\tgit commit -m C &&\n' span_id:932) (Token id:Id.Lit_Chars val:'\n' span_id:933) (Token id:Id.Lit_Chars val:'\tgit checkout -q B^0 &&\n' span_id:934) (Token id: Id.Lit_Chars val: '\tgit merge --no-commit -s ours C^0 &&\n' span_id: 935 ) (Token id:Id.Lit_Chars val:'\tgit mv b newname &&\n' span_id:936) (Token id: Id.Lit_Chars val: '\tgit commit -m "Merge commit C^0 into HEAD" &&\n' span_id: 937 ) (Token id:Id.Lit_Chars val:'\tgit tag D &&\n' span_id:938) (Token id:Id.Lit_Chars val:'\n' span_id:939) (Token id:Id.Lit_Chars val:'\tgit checkout -q C^0 &&\n' span_id:940) (Token id: Id.Lit_Chars val: '\tgit merge --no-commit -s ours B^0 &&\n' span_id: 941 ) (Token id:Id.Lit_Chars val:'\tgit mv c newname &&\n' span_id:942) (Token id:Id.Lit_Chars val:'\tprintf "7\\n8\\n" >>newname &&\n' span_id:943) (Token id:Id.Lit_Chars val:'\tgit add -u &&\n' span_id:944) (Token id: Id.Lit_Chars val: '\tgit commit -m "Merge commit B^0 into HEAD" &&\n' span_id: 945 ) (Token id:Id.Lit_Chars val:'\tgit tag E\n' span_id:946) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'handle rename/rename(1to2)/modify followed by what looks like rename/rename(2to1)/modify' span_id: 953 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:957) (Token id:Id.Lit_Chars val:'\tgit checkout D^0 &&\n' span_id:958) (Token id:Id.Lit_Chars val:'\n' span_id:959) (Token id:Id.Lit_Chars val:'\tgit merge -s recursive E^0 &&\n' span_id:960) (Token id:Id.Lit_Chars val:'\n' span_id:961) (Token id: Id.Lit_Chars val: '\ttest 1 -eq $(git ls-files -s | wc -l) &&\n' span_id: 962 ) (Token id:Id.Lit_Chars val:'\ttest 0 -eq $(git ls-files -u | wc -l) &&\n' span_id:963) (Token id: Id.Lit_Chars val: '\ttest 0 -eq $(git ls-files -o | wc -l) &&\n' span_id: 964 ) (Token id:Id.Lit_Chars val:'\n' span_id:965) (Token id: Id.Lit_Chars val: '\ttest $(git rev-parse HEAD:newname) = $(git rev-parse E:newname)\n' span_id: 966 ) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'setup criss-cross + rename/rename/add + modify/modify' span_id: 1037 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1041) (Token id:Id.Lit_Chars val:'\tgit rm -rf . &&\n' span_id:1042) (Token id:Id.Lit_Chars val:'\tgit clean -fdqx &&\n' span_id:1043) (Token id:Id.Lit_Chars val:'\trm -rf .git &&\n' span_id:1044) (Token id:Id.Lit_Chars val:'\tgit init &&\n' span_id:1045) (Token id:Id.Lit_Chars val:'\n' span_id:1046) (Token id:Id.Lit_Chars val:'\tprintf "lots\\nof\\nwords\\nand\\ncontent\\n" >a &&\n' span_id:1047) (Token id:Id.Lit_Chars val:'\tgit add a &&\n' span_id:1048) (Token id:Id.Lit_Chars val:'\tgit commit -m A &&\n' span_id:1049) (Token id:Id.Lit_Chars val:'\tgit tag A &&\n' span_id:1050) (Token id:Id.Lit_Chars val:'\n' span_id:1051) (Token id:Id.Lit_Chars val:'\tgit checkout -b B A &&\n' span_id:1052) (Token id:Id.Lit_Chars val:'\tgit mv a b &&\n' span_id:1053) (Token id:Id.Lit_Chars val:'\tgit commit -m B &&\n' span_id:1054) (Token id:Id.Lit_Chars val:'\n' span_id:1055) (Token id:Id.Lit_Chars val:'\tgit checkout -b C A &&\n' span_id:1056) (Token id:Id.Lit_Chars val:'\tgit mv a c &&\n' span_id:1057) (Token id: Id.Lit_Chars val: '\tprintf "2\\n3\\n4\\n5\\n6\\n7\\n" >a &&\n' span_id: 1058 ) (Token id:Id.Lit_Chars val:'\tgit add a &&\n' span_id:1059) (Token id:Id.Lit_Chars val:'\tgit commit -m C &&\n' span_id:1060) (Token id:Id.Lit_Chars val:'\n' span_id:1061) (Token id:Id.Lit_Chars val:'\tgit checkout B^0 &&\n' span_id:1062) (Token id:Id.Lit_Chars val:'\tgit merge --no-commit -s ours C^0 &&\n' span_id:1063) (Token id:Id.Lit_Chars val:'\tgit checkout C -- a c &&\n' span_id:1064) (Token id:Id.Lit_Chars val:'\tmv a old_a &&\n' span_id:1065) (Token id:Id.Lit_Chars val:'\techo 1 >a &&\n' span_id:1066) (Token id:Id.Lit_Chars val:'\tcat old_a >>a &&\n' span_id:1067) (Token id:Id.Lit_Chars val:'\trm old_a &&\n' span_id:1068) (Token id:Id.Lit_Chars val:'\tgit add -u &&\n' span_id:1069) (Token id: Id.Lit_Chars val: '\tgit commit -m "Merge commit C^0 into HEAD" &&\n' span_id: 1070 ) (Token id:Id.Lit_Chars val:'\tgit tag D &&\n' span_id:1071) (Token id:Id.Lit_Chars val:'\n' span_id:1072) (Token id:Id.Lit_Chars val:'\tgit checkout C^0 &&\n' span_id:1073) (Token id: Id.Lit_Chars val: '\tgit merge --no-commit -s ours B^0 &&\n' span_id: 1074 ) (Token id:Id.Lit_Chars val:'\tgit checkout B -- b &&\n' span_id:1075) (Token id:Id.Lit_Chars val:'\techo 8 >>a &&\n' span_id:1076) (Token id:Id.Lit_Chars val:'\tgit add -u &&\n' span_id:1077) (Token id: Id.Lit_Chars val: '\tgit commit -m "Merge commit B^0 into HEAD" &&\n' span_id: 1078 ) (Token id:Id.Lit_Chars val:'\tgit tag E\n' span_id:1079) ) } ) (C {(test_expect_failure)} { (SQ (Token id: Id.Lit_Chars val: 'detect rename/rename/add-source for virtual merge-base' span_id: 1086 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1090) (Token id:Id.Lit_Chars val:'\tgit checkout D^0 &&\n' span_id:1091) (Token id:Id.Lit_Chars val:'\n' span_id:1092) (Token id:Id.Lit_Chars val:'\tgit merge -s recursive E^0 &&\n' span_id:1093) (Token id:Id.Lit_Chars val:'\n' span_id:1094) (Token id: Id.Lit_Chars val: '\ttest 3 -eq $(git ls-files -s | wc -l) &&\n' span_id: 1095 ) (Token id:Id.Lit_Chars val:'\ttest 0 -eq $(git ls-files -u | wc -l) &&\n' span_id:1096) (Token id: Id.Lit_Chars val: '\ttest 0 -eq $(git ls-files -o | wc -l) &&\n' span_id: 1097 ) (Token id:Id.Lit_Chars val:'\n' span_id:1098) (Token id: Id.Lit_Chars val: '\ttest $(git rev-parse HEAD:b) = $(git rev-parse A:a) &&\n' span_id: 1099 ) (Token id:Id.Lit_Chars val:'\ttest $(git rev-parse HEAD:c) = $(git rev-parse A:a) &&\n' span_id:1100) (Token id: Id.Lit_Chars val: '\ttest "$(cat a)" = "$(printf "1\\n2\\n3\\n4\\n5\\n6\\n7\\n8\\n")"\n' span_id: 1101 ) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'setup criss-cross+rename/rename/add-dest + simple modify' span_id: 1166 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1170) (Token id:Id.Lit_Chars val:'\tgit rm -rf . &&\n' span_id:1171) (Token id:Id.Lit_Chars val:'\tgit clean -fdqx &&\n' span_id:1172) (Token id:Id.Lit_Chars val:'\trm -rf .git &&\n' span_id:1173) (Token id:Id.Lit_Chars val:'\tgit init &&\n' span_id:1174) (Token id:Id.Lit_Chars val:'\n' span_id:1175) (Token id:Id.Lit_Chars val:'\t>a &&\n' span_id:1176) (Token id:Id.Lit_Chars val:'\tgit add a &&\n' span_id:1177) (Token id:Id.Lit_Chars val:'\tgit commit -m A &&\n' span_id:1178) (Token id:Id.Lit_Chars val:'\tgit tag A &&\n' span_id:1179) (Token id:Id.Lit_Chars val:'\n' span_id:1180) (Token id:Id.Lit_Chars val:'\tgit checkout -b B A &&\n' span_id:1181) (Token id:Id.Lit_Chars val:'\tgit mv a b &&\n' span_id:1182) (Token id: Id.Lit_Chars val: '\tprintf "1\\n2\\n3\\n4\\n5\\n6\\n7\\n" >c &&\n' span_id: 1183 ) (Token id:Id.Lit_Chars val:'\tgit add c &&\n' span_id:1184) (Token id:Id.Lit_Chars val:'\tgit commit -m B &&\n' span_id:1185) (Token id:Id.Lit_Chars val:'\n' span_id:1186) (Token id:Id.Lit_Chars val:'\tgit checkout -b C A &&\n' span_id:1187) (Token id:Id.Lit_Chars val:'\tgit mv a c &&\n' span_id:1188) (Token id:Id.Lit_Chars val:'\tgit commit -m C &&\n' span_id:1189) (Token id:Id.Lit_Chars val:'\n' span_id:1190) (Token id:Id.Lit_Chars val:'\tgit checkout B^0 &&\n' span_id:1191) (Token id:Id.Lit_Chars val:'\tgit merge --no-commit -s ours C^0 &&\n' span_id:1192) (Token id:Id.Lit_Chars val:'\tgit mv b a &&\n' span_id:1193) (Token id:Id.Lit_Chars val:'\tgit commit -m "D is like B but renames b back to a" &&\n' span_id:1194) (Token id:Id.Lit_Chars val:'\tgit tag D &&\n' span_id:1195) (Token id:Id.Lit_Chars val:'\n' span_id:1196) (Token id:Id.Lit_Chars val:'\tgit checkout B^0 &&\n' span_id:1197) (Token id:Id.Lit_Chars val:'\tgit merge --no-commit -s ours C^0 &&\n' span_id:1198) (Token id:Id.Lit_Chars val:'\tgit mv b a &&\n' span_id:1199) (Token id:Id.Lit_Chars val:'\techo 8 >>c &&\n' span_id:1200) (Token id:Id.Lit_Chars val:'\tgit add c &&\n' span_id:1201) (Token id:Id.Lit_Chars val:'\tgit commit -m "E like D but has mod in c" &&\n' span_id:1202) (Token id:Id.Lit_Chars val:'\tgit tag E\n' span_id:1203) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'virtual merge base handles rename/rename(1to2)/add-dest' span_id: 1210 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1214) (Token id:Id.Lit_Chars val:'\tgit checkout D^0 &&\n' span_id:1215) (Token id:Id.Lit_Chars val:'\n' span_id:1216) (Token id:Id.Lit_Chars val:'\tgit merge -s recursive E^0 &&\n' span_id:1217) (Token id:Id.Lit_Chars val:'\n' span_id:1218) (Token id: Id.Lit_Chars val: '\ttest 2 -eq $(git ls-files -s | wc -l) &&\n' span_id: 1219 ) (Token id:Id.Lit_Chars val:'\ttest 0 -eq $(git ls-files -u | wc -l) &&\n' span_id:1220) (Token id: Id.Lit_Chars val: '\ttest 0 -eq $(git ls-files -o | wc -l) &&\n' span_id: 1221 ) (Token id:Id.Lit_Chars val:'\n' span_id:1222) (Token id: Id.Lit_Chars val: '\ttest $(git rev-parse HEAD:a) = $(git rev-parse A:a) &&\n' span_id: 1223 ) (Token id:Id.Lit_Chars val:'\ttest $(git rev-parse HEAD:c) = $(git rev-parse E:c)\n' span_id:1224) ) } ) (C {(test_done)}) ] )