(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <"Merge-recursive merging renames">)} spids: [4] ) ] spids: [4] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(setup)} { (SQ <"\n"> <"cat >A <<\\EOF &&\n"> <"a aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"> <"b bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\n"> <"c cccccccccccccccccccccccccccccccccccccccccccccccc\n"> <"d dddddddddddddddddddddddddddddddddddddddddddddddd\n"> <"e eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee\n"> <"f ffffffffffffffffffffffffffffffffffffffffffffffff\n"> <"g gggggggggggggggggggggggggggggggggggggggggggggggg\n"> <"h hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh\n"> <"i iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii\n"> <"j jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj\n"> <"k kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk\n"> <"l llllllllllllllllllllllllllllllllllllllllllllllll\n"> <"m mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm\n"> <"n nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn\n"> <"o oooooooooooooooooooooooooooooooooooooooooooooooo\n"> <"EOF\n"> <"\n"> <"cat >M <<\\EOF &&\n"> <"A AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n"> <"B BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB\n"> <"C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\n"> <"D DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD\n"> <"E EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\n"> <"F FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\n"> <"G GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG\n"> <"H HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH\n"> <"I IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII\n"> <"J JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ\n"> <"K KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK\n"> <"L LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL\n"> <"M MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM\n"> <"N NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\n"> <"O OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO\n"> <"EOF\n"> <"\n"> <"git add A M &&\n"> <"git commit -m \"initial has A and M\" &&\n"> <"git branch white &&\n"> <"git branch red &&\n"> <"git branch blue &&\n"> <"\n"> <"git checkout white &&\n"> <"sed -e \"/^g /s/.*/g : white changes a line/\" <A >B &&\n"> <"sed -e \"/^G /s/.*/G : colored branch changes a line/\" <M >N &&\n"> <"rm -f A M &&\n"> <"git update-index --add --remove A B M N &&\n"> <"git commit -m \"white renames A->B, M->N\" &&\n"> <"\n"> <"git checkout red &&\n"> <"echo created by red >R &&\n"> <"git update-index --add R &&\n"> <"git commit -m \"red creates R\" &&\n"> <"\n"> <"git checkout blue &&\n"> <"sed -e \"/^o /s/.*/g : blue changes a line/\" <A >B &&\n"> <"rm -f A &&\n"> <"mv B A &&\n"> <"git update-index A &&\n"> <"git commit -m \"blue modify A\" &&\n"> <"\n"> <"git checkout master"> ) } ) (C {(test_expect_success)} {(SQ <"merge white into red (A->B,M->N)">)} { (SQ <"\n"> <"\tgit checkout -b red-white red &&\n"> <"\tgit merge white &&\n"> <"\tgit write-tree &&\n"> <"\ttest_path_is_file B &&\n"> <"\ttest_path_is_file N &&\n"> <"\ttest_path_is_file R &&\n"> <"\ttest_path_is_missing A &&\n"> <"\ttest_path_is_missing M\n"> ) } ) (C {(test_expect_success)} {(SQ <"merge blue into white (A->B, mod A, A untracked)">)} { (SQ <"\n"> <"\tgit checkout -b white-blue white &&\n"> <"\techo dirty >A &&\n"> <"\tgit merge blue &&\n"> <"\tgit write-tree &&\n"> <"\ttest_path_is_file A &&\n"> <"\techo dirty >expect &&\n"> <"\ttest_cmp expect A &&\n"> <"\ttest_path_is_file B &&\n"> <"\ttest_path_is_file N &&\n"> <"\ttest_path_is_missing M\n"> ) } ) (C {(test_done)}) ] )