(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 repo with criss-cross history' span_id:73))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:77) (Token id:Id.Lit_Chars val:'\tmkdir data &&\n' span_id:78) (Token id:Id.Lit_Chars val:'\n' span_id:79) (Token id:Id.Lit_Chars val:'\t# create a bunch of files\n' span_id:80) (Token id:Id.Lit_Chars val:'\tn=1 &&\n' span_id:81) (Token id:Id.Lit_Chars val:'\twhile test $n -le 10\n' span_id:82) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:83) (Token id:Id.Lit_Chars val:'\t\techo $n > data/$n &&\n' span_id:84) (Token id:Id.Lit_Chars val:'\t\tn=$(($n+1)) ||\n' span_id:85) (Token id:Id.Lit_Chars val:'\t\treturn 1\n' span_id:86) (Token id:Id.Lit_Chars val:'\tdone &&\n' span_id:87) (Token id:Id.Lit_Chars val:'\n' span_id:88) (Token id:Id.Lit_Chars val:'\t# check them in\n' span_id:89) (Token id:Id.Lit_Chars val:'\tgit add data &&\n' span_id:90) (Token id:Id.Lit_Chars val:'\tgit commit -m A &&\n' span_id:91) (Token id:Id.Lit_Chars val:'\tgit branch A &&\n' span_id:92) (Token id:Id.Lit_Chars val:'\n' span_id:93) (Token id:Id.Lit_Chars val:'\t# a file in one branch\n' span_id:94) (Token id:Id.Lit_Chars val:'\tgit checkout -b B A &&\n' span_id:95) (Token id:Id.Lit_Chars val:'\tgit rm data/9 &&\n' span_id:96) (Token id:Id.Lit_Chars val:'\tgit add data &&\n' span_id:97) (Token id:Id.Lit_Chars val:'\tgit commit -m B &&\n' span_id:98) (Token id:Id.Lit_Chars val:'\n' span_id:99) (Token id:Id.Lit_Chars val:'\t# with a branch off of it\n' span_id:100) (Token id:Id.Lit_Chars val:'\tgit branch D &&\n' span_id:101) (Token id:Id.Lit_Chars val:'\n' span_id:102) (Token id:Id.Lit_Chars val:'\t# put some commits on D\n' span_id:103) (Token id:Id.Lit_Chars val:'\tgit checkout D &&\n' span_id:104) (Token id:Id.Lit_Chars val:'\techo testD > data/testD &&\n' span_id:105) (Token id:Id.Lit_Chars val:'\tgit add data &&\n' span_id:106) (Token id:Id.Lit_Chars val:'\tgit commit -m D &&\n' span_id:107) (Token id:Id.Lit_Chars val:'\n' span_id:108) (Token id: Id.Lit_Chars val: '\t# back up to the top, create another branch and cause\n' span_id: 109 ) (Token id:Id.Lit_Chars val:'\t# a rename conflict with the file we deleted earlier\n' span_id:110) (Token id:Id.Lit_Chars val:'\tgit checkout -b C A &&\n' span_id:111) (Token id:Id.Lit_Chars val:'\tgit mv data/9 data/new-9 &&\n' span_id:112) (Token id:Id.Lit_Chars val:'\tgit add data &&\n' span_id:113) (Token id:Id.Lit_Chars val:'\tgit commit -m C &&\n' span_id:114) (Token id:Id.Lit_Chars val:'\n' span_id:115) (Token id:Id.Lit_Chars val:'\t# with a branch off of it\n' span_id:116) (Token id:Id.Lit_Chars val:'\tgit branch E &&\n' span_id:117) (Token id:Id.Lit_Chars val:'\n' span_id:118) (Token id:Id.Lit_Chars val:'\t# put a commit on E\n' span_id:119) (Token id:Id.Lit_Chars val:'\tgit checkout E &&\n' span_id:120) (Token id:Id.Lit_Chars val:'\techo testE > data/testE &&\n' span_id:121) (Token id:Id.Lit_Chars val:'\tgit add data &&\n' span_id:122) (Token id:Id.Lit_Chars val:'\tgit commit -m E &&\n' span_id:123) (Token id:Id.Lit_Chars val:'\n' span_id:124) (Token id:Id.Lit_Chars val:'\t# now, merge E into B\n' span_id:125) (Token id:Id.Lit_Chars val:'\tgit checkout B &&\n' span_id:126) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge E &&\n' span_id:127) (Token id:Id.Lit_Chars val:'\t# force-resolve\n' span_id:128) (Token id:Id.Lit_Chars val:'\tgit add data &&\n' span_id:129) (Token id:Id.Lit_Chars val:'\tgit commit -m F &&\n' span_id:130) (Token id:Id.Lit_Chars val:'\tgit branch F &&\n' span_id:131) (Token id:Id.Lit_Chars val:'\n' span_id:132) (Token id:Id.Lit_Chars val:'\t# and merge D into C\n' span_id:133) (Token id:Id.Lit_Chars val:'\tgit checkout C &&\n' span_id:134) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge D &&\n' span_id:135) (Token id:Id.Lit_Chars val:'\t# force-resolve\n' span_id:136) (Token id:Id.Lit_Chars val:'\tgit add data &&\n' span_id:137) (Token id:Id.Lit_Chars val:'\tgit commit -m G &&\n' span_id:138) (Token id:Id.Lit_Chars val:'\tgit branch G\n' span_id:139) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'recursive merge between F and G, causes segfault' span_id: 146 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:150) (Token id:Id.Lit_Chars val:'\tgit merge F\n' span_id:151) ) } ) (C {(test_done)}) ] )