(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <"merge-recursive backend test">)} spids: [4] ) ] spids: [4] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(SQ <"setup repo with criss-cross history">)} { (SQ <"\n"> <"\tmkdir data &&\n"> <"\n"> <"\t# create a bunch of files\n"> <"\tn=1 &&\n"> <"\twhile test $n -le 10\n"> <"\tdo\n"> <"\t\techo $n > data/$n &&\n"> <"\t\tn=$(($n+1)) ||\n"> <"\t\treturn 1\n"> <"\tdone &&\n"> <"\n"> <"\t# check them in\n"> <"\tgit add data &&\n"> <"\tgit commit -m A &&\n"> <"\tgit branch A &&\n"> <"\n"> <"\t# a file in one branch\n"> <"\tgit checkout -b B A &&\n"> <"\tgit rm data/9 &&\n"> <"\tgit add data &&\n"> <"\tgit commit -m B &&\n"> <"\n"> <"\t# with a branch off of it\n"> <"\tgit branch D &&\n"> <"\n"> <"\t# put some commits on D\n"> <"\tgit checkout D &&\n"> <"\techo testD > data/testD &&\n"> <"\tgit add data &&\n"> <"\tgit commit -m D &&\n"> <"\n"> <"\t# back up to the top, create another branch and cause\n"> <"\t# a rename conflict with the file we deleted earlier\n"> <"\tgit checkout -b C A &&\n"> <"\tgit mv data/9 data/new-9 &&\n"> <"\tgit add data &&\n"> <"\tgit commit -m C &&\n"> <"\n"> <"\t# with a branch off of it\n"> <"\tgit branch E &&\n"> <"\n"> <"\t# put a commit on E\n"> <"\tgit checkout E &&\n"> <"\techo testE > data/testE &&\n"> <"\tgit add data &&\n"> <"\tgit commit -m E &&\n"> <"\n"> <"\t# now, merge E into B\n"> <"\tgit checkout B &&\n"> <"\ttest_must_fail git merge E &&\n"> <"\t# force-resolve\n"> <"\tgit add data &&\n"> <"\tgit commit -m F &&\n"> <"\tgit branch F &&\n"> <"\n"> <"\t# and merge D into C\n"> <"\tgit checkout C &&\n"> <"\ttest_must_fail git merge D &&\n"> <"\t# force-resolve\n"> <"\tgit add data &&\n"> <"\tgit commit -m G &&\n"> <"\tgit branch G\n"> ) } ) (C {(test_expect_success)} {(SQ <"recursive merge between F and G, causes segfault">)} {(SQ <"\n"> <"\tgit merge F\n">)} ) (C {(test_done)}) ] )