(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:'git merge\n' span_id:15) (Token id:Id.Lit_Chars val:'\n' span_id:16) (Token id:Id.Lit_Chars val:'Testing basic merge operations/option parsing.\n' span_id:17) (Token id:Id.Lit_Chars val:'\n' span_id:18) (Token id:Id.Lit_Chars val:'! [c0] commit 0\n' span_id:19) (Token id:Id.Lit_Chars val:' ! [c1] commit 1\n' span_id:20) (Token id:Id.Lit_Chars val:' ! [c2] commit 2\n' span_id:21) (Token id:Id.Lit_Chars val:' ! [c3] commit 3\n' span_id:22) (Token id:Id.Lit_Chars val:' ! [c4] c4\n' span_id:23) (Token id:Id.Lit_Chars val:' ! [c5] c5\n' span_id:24) (Token id:Id.Lit_Chars val:' ! [c6] c6\n' span_id:25) (Token id: Id.Lit_Chars val: ' * [master] Merge commit ' span_id: 26 ) ) (c1) (SQ (Token id:Id.Lit_Chars val:'\n' span_id:30) (Token id:Id.Lit_Chars val:'--------\n' span_id:31) (Token id:Id.Lit_Chars val:' - [master] Merge commit ' span_id:32) ) (c1) (SQ (Token id:Id.Lit_Chars val:'\n' span_id:36) (Token id:Id.Lit_Chars val:' + * [c1] commit 1\n' span_id:37) (Token id:Id.Lit_Chars val:' + [c6] c6\n' span_id:38) (Token id:Id.Lit_Chars val:' + [c5] c5\n' span_id:39) (Token id:Id.Lit_Chars val:' ++ [c4] c4\n' span_id:40) (Token id:Id.Lit_Chars val:' ++++ [c3] commit 3\n' span_id:41) (Token id:Id.Lit_Chars val:' + [c2] commit 2\n' span_id:42) (Token id:Id.Lit_Chars val:'+++++++* [c0] commit 0\n' span_id:43) ) } spids: [13] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(.)} {(DQ ($ Id.VSub_DollarName '$TEST_DIRECTORY')) (/lib-gpg.sh)}) (command.Simple words: [ {(printf)} {(SQ (Token id:Id.Lit_Chars val:'%s\\n' span_id:62))} {(1)} {(2)} {(3)} {(4)} {(5)} {(6)} {(7)} {(8)} {(9)} ] redirects: [(redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:83) fd:-1 arg_word:{(file)})] ) (command.Simple words: [ {(printf)} {(SQ (Token id:Id.Lit_Chars val:'%s\\n' span_id:89))} {(SQ (Token id:Id.Lit_Chars val:'1 X' span_id:93))} {(2)} {(3)} {(4)} {(5)} {(6)} {(7)} {(8)} {(9)} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:112) fd: -1 arg_word: {(file.1)} ) ] ) (command.Simple words: [ {(printf)} {(SQ (Token id:Id.Lit_Chars val:'%s\\n' span_id:118))} {(1)} {(2)} {(3)} {(4)} {(SQ (Token id:Id.Lit_Chars val:'5 X' span_id:130))} {(6)} {(7)} {(8)} {(9)} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:141) fd: -1 arg_word: {(file.5)} ) ] ) (command.Simple words: [ {(printf)} {(SQ (Token id:Id.Lit_Chars val:'%s\\n' span_id:147))} {(1)} {(2)} {(3)} {(4)} {(5)} {(6)} {(7)} {(8)} {(SQ (Token id:Id.Lit_Chars val:'9 X' span_id:167))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:170) fd: -1 arg_word: {(file.9)} ) ] ) (command.Simple words: [ {(printf)} {(SQ (Token id:Id.Lit_Chars val:'%s\\n' span_id:176))} {(1)} {(2)} {(3)} {(4)} {(5)} {(6)} {(7)} {(8)} {(SQ (Token id:Id.Lit_Chars val:'9 Y' span_id:196))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:199) fd: -1 arg_word: {(file.9y)} ) ] ) (command.Simple words: [ {(printf)} {(SQ (Token id:Id.Lit_Chars val:'%s\\n' span_id:205))} {(SQ (Token id:Id.Lit_Chars val:'1 X' span_id:209))} {(2)} {(3)} {(4)} {(5)} {(6)} {(7)} {(8)} {(9)} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:228) fd: -1 arg_word: {(result.1)} ) ] ) (command.Simple words: [ {(printf)} {(SQ (Token id:Id.Lit_Chars val:'%s\\n' span_id:234))} {(SQ (Token id:Id.Lit_Chars val:'1 X' span_id:238))} {(2)} {(3)} {(4)} {(SQ (Token id:Id.Lit_Chars val:'5 X' span_id:248))} {(6)} {(7)} {(8)} {(9)} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:259) fd: -1 arg_word: {(result.1-5)} ) ] ) (command.Simple words: [ {(printf)} {(SQ (Token id:Id.Lit_Chars val:'%s\\n' span_id:265))} {(SQ (Token id:Id.Lit_Chars val:'1 X' span_id:269))} {(2)} {(3)} {(4)} {(SQ (Token id:Id.Lit_Chars val:'5 X' span_id:279))} {(6)} {(7)} {(8)} {(SQ (Token id:Id.Lit_Chars val:'9 X' span_id:289))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:292) fd: -1 arg_word: {(result.1-5-9)} ) ] ) (command.Simple words: [ {(printf)} {(SQ (Token id:Id.Lit_Chars val:'%s\\n' span_id:298))} {(1)} {(2)} {(3)} {(4)} {(5)} {(6)} {(7)} {(8)} {(SQ (Token id:Id.Lit_Chars val:'9 Z' span_id:318))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:321) fd: -1 arg_word: {(result.9z)} ) ] ) (command.Simple redirects: [ (redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:324) fd:-1 arg_word:{(empty)}) ] ) (command.ShFunction name: create_merge_msgs body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp] children: [ (command.Simple words: [{(echo)} {(DQ ("Merge tag 'c2'"))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:342) fd: -1 arg_word: {(msg.1-5)} ) ] ) (command.Simple words: [{(echo)} {(DQ ("Merge tags 'c2' and 'c3'"))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:354) fd: -1 arg_word: {(msg.1-5-9)} ) ] ) (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (C {(echo)} {(DQ ('Squashed commit of the following:'))}) (C {(echo)}) (C {(git)} {(log)} {(--no-merges)} {(Id.Lit_Other '^') (HEAD)} {(c1)}) ] ) ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:391) fd: -1 arg_word: {(squash.1)} ) ] ) (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (C {(echo)} {(DQ ('Squashed commit of the following:'))}) (C {(echo)}) (C {(git)} {(log)} {(--no-merges)} {(Id.Lit_Other '^') (HEAD)} {(c2)}) ] ) ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:428) fd: -1 arg_word: {(squash.1-5)} ) ] ) (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (C {(echo)} {(DQ ('Squashed commit of the following:'))}) (C {(echo)}) (C {(git)} {(log)} {(--no-merges)} {(Id.Lit_Other '^') (HEAD)} {(c2)} {(c3)}) ] ) ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:467) fd: -1 arg_word: {(squash.1-5-9)} ) ] ) (command.Simple words: [{(Id.Lit_Other ':')}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:475) fd: -1 arg_word: {(msg.nologff)} ) ] ) (command.Simple words: [{(Id.Lit_Other ':')}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:483) fd: -1 arg_word: {(msg.nolognoff)} ) ] ) (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [(C {(echo)} {(DQ ("* tag 'c3':"))}) (C {(echo)} {(DQ (' commit 3'))})] ) ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:510) fd: -1 arg_word: {(msg.log)} ) ] ) ] ) ] ) ) (command.ShFunction name: verify_merge body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp] children: [ (C {(test_cmp)} {(DQ ($ Id.VSub_Number '$2'))} {(DQ ($ Id.VSub_Number '$1'))}) (C {(git)} {(update-index)} {(--refresh)}) (C {(git)} {(diff)} {(--exit-code)}) (command.If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ Id.VSub_Number '$3'))})] action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.Simple words: [ {(git)} {(show)} {(-s)} {(--pretty) (Id.Lit_Equals '=') (tformat) (Id.Lit_Other ':') (Id.Lit_Other '%') (s) } {(HEAD)} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:584) fd: -1 arg_word: {(msg.act)} ) ] ) (C {(test_cmp)} {(DQ ($ Id.VSub_Number '$3'))} {(msg.act)}) ] ) ] spids: [555 566] ) ] ) ] ) ] ) ) (command.ShFunction name: verify_head body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (command.Simple words: [{(echo)} {(DQ ($ Id.VSub_Number '$1'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:618) fd: -1 arg_word: {(head.expected)} ) ] ) (command.Simple words: [{(git)} {(rev-parse)} {(HEAD)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:630) fd: -1 arg_word: {(head.actual)} ) ] ) (C {(test_cmp)} {(head.expected)} {(head.actual)}) ] ) ] ) ) (command.ShFunction name: verify_parents body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp] children: [ (command.Simple words: [ {(printf)} {(SQ (Token id:Id.Lit_Chars val:'%s\\n' span_id:656))} {(DQ ($ Id.VSub_At '$@'))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:663) fd: -1 arg_word: {(parents.expected)} ) ] ) (command.Simple redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:669) fd: -1 arg_word: {(parents.actual)} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:i) op: assign_op.Equal rhs: {(1)} spids: [675] ) ] ) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:681) cond: [(C {(test)} {($ Id.VSub_DollarName '$i')} {(-le)} {($ Id.VSub_Pound '$#')})] body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DPipe] children: [ (command.Simple words: [ {(git)} {(rev-parse)} {(HEAD) (Id.Lit_Other '^') ($ Id.VSub_DollarName '$i')} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:703) fd: -1 arg_word: {(parents.actual)} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:i) op: assign_op.Equal rhs: { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 710 ) command_list: (command.CommandList children: [ (C {(expr)} {($ Id.VSub_DollarName '$i')} {(Id.Lit_Other '+')} {(1)} ) ] ) ) } spids: [709] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:723) arg_word: {(1)} ) ] ) ] ) ) (C {(test_must_fail)} {(git)} {(rev-parse)} {(--verify)} {(DQ ('HEAD^') ($ Id.VSub_DollarName '$i'))} ) (C {(test_cmp)} {(parents.expected)} {(parents.actual)}) ] ) ] ) ) (command.ShFunction name: verify_mergeheads body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (command.Simple words: [ {(printf)} {(SQ (Token id:Id.Lit_Chars val:'%s\\n' span_id:769))} {(DQ ($ Id.VSub_At '$@'))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:776) fd: -1 arg_word: {(mergehead.expected)} ) ] ) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:782) cond: [(C {(read)} {(sha1)} {(rest)})] body: (command.DoGroup children: [(C {(git)} {(rev-parse)} {($ Id.VSub_DollarName '$sha1')})] ) redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:803) fd: -1 arg_word: {(.git/MERGE_HEAD)} ) (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:806) fd: -1 arg_word: {(mergehead.actual)} ) ] ) (C {(test_cmp)} {(mergehead.expected)} {(mergehead.actual)}) ] ) ] ) ) (command.ShFunction name: verify_no_mergehead body: (command.BraceGroup children: [(command.Pipeline children:[(C {(test)} {(-e)} {(.git/MERGE_HEAD)})] negated:T)] ) ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:setup span_id:843))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:847) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:848) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:849) (Token id:Id.Lit_Chars val:'\tgit commit -m "commit 0" &&\n' span_id:850) (Token id:Id.Lit_Chars val:'\tgit tag c0 &&\n' span_id:851) (Token id:Id.Lit_Chars val:'\tc0=$(git rev-parse HEAD) &&\n' span_id:852) (Token id:Id.Lit_Chars val:'\tcp file.1 file &&\n' span_id:853) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:854) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:855) (Token id:Id.Lit_Chars val:'\tgit commit -m "commit 1" &&\n' span_id:856) (Token id:Id.Lit_Chars val:'\tgit tag c1 &&\n' span_id:857) (Token id:Id.Lit_Chars val:'\tc1=$(git rev-parse HEAD) &&\n' span_id:858) (Token id:Id.Lit_Chars val:'\tgit reset --hard "$c0" &&\n' span_id:859) (Token id:Id.Lit_Chars val:'\tcp file.5 file &&\n' span_id:860) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:861) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:862) (Token id:Id.Lit_Chars val:'\tgit commit -m "commit 2" &&\n' span_id:863) (Token id:Id.Lit_Chars val:'\tgit tag c2 &&\n' span_id:864) (Token id:Id.Lit_Chars val:'\tc2=$(git rev-parse HEAD) &&\n' span_id:865) (Token id:Id.Lit_Chars val:'\tgit reset --hard "$c0" &&\n' span_id:866) (Token id:Id.Lit_Chars val:'\tcp file.9y file &&\n' span_id:867) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:868) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:869) (Token id:Id.Lit_Chars val:'\tgit commit -m "commit 7" &&\n' span_id:870) (Token id:Id.Lit_Chars val:'\tgit tag c7 &&\n' span_id:871) (Token id:Id.Lit_Chars val:'\tgit reset --hard "$c0" &&\n' span_id:872) (Token id:Id.Lit_Chars val:'\tcp file.9 file &&\n' span_id:873) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:874) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:875) (Token id:Id.Lit_Chars val:'\tgit commit -m "commit 3" &&\n' span_id:876) (Token id:Id.Lit_Chars val:'\tgit tag c3 &&\n' span_id:877) (Token id:Id.Lit_Chars val:'\tc3=$(git rev-parse HEAD) &&\n' span_id:878) (Token id:Id.Lit_Chars val:'\tgit reset --hard "$c0" &&\n' span_id:879) (Token id:Id.Lit_Chars val:'\tcreate_merge_msgs\n' span_id:880) ) } ) (C {(test_debug)} {(SQ (Token id:Id.Lit_Chars val:'git log --graph --decorate --oneline --all' span_id:887))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'test option parsing' span_id:894))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:898) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge -$ c1 &&\n' span_id:899) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge --no-such c1 &&\n' span_id:900) (Token id: Id.Lit_Chars val: '\ttest_must_fail git merge -s foobar c1 &&\n' span_id: 901 ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge -s=foobar c1 &&\n' span_id:902) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge -m &&\n' span_id:903) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge\n' span_id:904) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge -h with invalid index' span_id:911))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:915) (Token id:Id.Lit_Chars val:'\tmkdir broken &&\n' span_id:916) (Token id:Id.Lit_Chars val:'\t(\n' span_id:917) (Token id:Id.Lit_Chars val:'\t\tcd broken &&\n' span_id:918) (Token id:Id.Lit_Chars val:'\t\tgit init &&\n' span_id:919) (Token id:Id.Lit_Chars val:'\t\t>.git/index &&\n' span_id:920) (Token id:Id.Lit_Chars val:'\t\ttest_expect_code 129 git merge -h 2>usage\n' span_id:921) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:922) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep "[Uu]sage: git merge" broken/usage\n' span_id:923) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'reject non-strategy with a git-merge-foo name' span_id:930))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:934) (Token id: Id.Lit_Chars val: '\ttest_must_fail git merge -s index c1\n' span_id: 935 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge c0 with c1' span_id:942))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:946) (Token id: Id.Lit_Chars val: '\techo "OBJID HEAD@{0}: merge c1: Fast-forward" >reflog.expected &&\n' span_id: 947 ) (Token id:Id.Lit_Chars val:'\n' span_id:948) (Token id:Id.Lit_Chars val:'\tgit reset --hard c0 &&\n' span_id:949) (Token id:Id.Lit_Chars val:'\tgit merge c1 &&\n' span_id:950) (Token id:Id.Lit_Chars val:'\tverify_merge file result.1 &&\n' span_id:951) (Token id:Id.Lit_Chars val:'\tverify_head "$c1" &&\n' span_id:952) (Token id:Id.Lit_Chars val:'\n' span_id:953) (Token id:Id.Lit_Chars val:'\tgit reflog -1 >reflog.actual &&\n' span_id:954) (Token id: Id.Lit_Chars val: '\tsed "s/$_x05[0-9a-f]*/OBJID/g" reflog.actual >reflog.fuzzy &&\n' span_id: 955 ) (Token id:Id.Lit_Chars val:'\ttest_cmp reflog.expected reflog.fuzzy\n' span_id:956) ) } ) (C {(test_debug)} {(SQ (Token id:Id.Lit_Chars val:'git log --graph --decorate --oneline --all' span_id:963))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge c0 with c1 with --ff-only' span_id:970))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:974) (Token id:Id.Lit_Chars val:'\tgit reset --hard c0 &&\n' span_id:975) (Token id:Id.Lit_Chars val:'\tgit merge --ff-only c1 &&\n' span_id:976) (Token id:Id.Lit_Chars val:'\tgit merge --ff-only HEAD c0 c1 &&\n' span_id:977) (Token id:Id.Lit_Chars val:'\tverify_merge file result.1 &&\n' span_id:978) (Token id:Id.Lit_Chars val:'\tverify_head "$c1"\n' span_id:979) ) } ) (C {(test_debug)} {(SQ (Token id:Id.Lit_Chars val:'git log --graph --decorate --oneline --all' span_id:986))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge from unborn branch' span_id:993))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:997) (Token id:Id.Lit_Chars val:'\tgit checkout -f master &&\n' span_id:998) (Token id:Id.Lit_Chars val:'\ttest_might_fail git branch -D kid &&\n' span_id:999) (Token id:Id.Lit_Chars val:'\n' span_id:1000) (Token id: Id.Lit_Chars val: '\techo "OBJID HEAD@{0}: initial pull" >reflog.expected &&\n' span_id: 1001 ) (Token id:Id.Lit_Chars val:'\n' span_id:1002) (Token id:Id.Lit_Chars val:'\tgit checkout --orphan kid &&\n' span_id:1003) (Token id:Id.Lit_Chars val:'\ttest_when_finished "git checkout -f master" &&\n' span_id:1004) (Token id:Id.Lit_Chars val:'\tgit rm -fr . &&\n' span_id:1005) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:1006) (Token id:Id.Lit_Chars val:'\tgit merge --ff-only c1 &&\n' span_id:1007) (Token id:Id.Lit_Chars val:'\tverify_merge file result.1 &&\n' span_id:1008) (Token id:Id.Lit_Chars val:'\tverify_head "$c1" &&\n' span_id:1009) (Token id:Id.Lit_Chars val:'\n' span_id:1010) (Token id:Id.Lit_Chars val:'\tgit reflog -1 >reflog.actual &&\n' span_id:1011) (Token id: Id.Lit_Chars val: '\tsed "s/$_x05[0-9a-f][0-9a-f]/OBJID/g" reflog.actual >reflog.fuzzy &&\n' span_id: 1012 ) (Token id:Id.Lit_Chars val:'\ttest_cmp reflog.expected reflog.fuzzy\n' span_id:1013) ) } ) (C {(test_debug)} {(SQ (Token id:Id.Lit_Chars val:'git log --graph --decorate --oneline --all' span_id:1020))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge c1 with c2' span_id:1027))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1031) (Token id:Id.Lit_Chars val:'\tgit reset --hard c1 &&\n' span_id:1032) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:1033) (Token id:Id.Lit_Chars val:'\tgit merge c2 &&\n' span_id:1034) (Token id:Id.Lit_Chars val:'\tverify_merge file result.1-5 msg.1-5 &&\n' span_id:1035) (Token id:Id.Lit_Chars val:'\tverify_parents $c1 $c2\n' span_id:1036) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge --squash c3 with c7' span_id:1043))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1047) (Token id:Id.Lit_Chars val:'\tgit reset --hard c3 &&\n' span_id:1048) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge --squash c7 &&\n' span_id:1049) (Token id:Id.Lit_Chars val:'\tcat result.9z >file &&\n' span_id:1050) (Token id:Id.Lit_Chars val:'\tgit commit --no-edit -a &&\n' span_id:1051) (Token id:Id.Lit_Chars val:'\n' span_id:1052) (Token id:Id.Lit_Chars val:'\t{\n' span_id:1053) (Token id:Id.Lit_Chars val:'\t\tcat <<-EOF\n' span_id:1054) (Token id:Id.Lit_Chars val:'\t\tSquashed commit of the following:\n' span_id:1055) (Token id:Id.Lit_Chars val:'\n' span_id:1056) (Token id:Id.Lit_Chars val:'\t\t$(git show -s c7)\n' span_id:1057) (Token id:Id.Lit_Chars val:'\n' span_id:1058) (Token id:Id.Lit_Chars val:'\t\t# Conflicts:\n' span_id:1059) (Token id:Id.Lit_Chars val:'\t\t#\tfile\n' span_id:1060) (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:1061) (Token id:Id.Lit_Chars val:'\t} >expect &&\n' span_id:1062) (Token id:Id.Lit_Chars val:'\tgit cat-file commit HEAD | sed -e ' span_id:1063) ) (1) (Id.Lit_Comma ',') (/) (Id.Lit_Other '^') (Id.Lit_Other '$') (/d) (SQ (Token id:Id.Lit_Chars val:' >actual &&\n' span_id:1072) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1073) ) } ) (C {(test_debug)} {(SQ (Token id:Id.Lit_Chars val:'git log --graph --decorate --oneline --all' span_id:1080))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge c1 with c2 and c3' span_id:1087))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1091) (Token id:Id.Lit_Chars val:'\tgit reset --hard c1 &&\n' span_id:1092) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:1093) (Token id:Id.Lit_Chars val:'\tgit merge c2 c3 &&\n' span_id:1094) (Token id:Id.Lit_Chars val:'\tverify_merge file result.1-5-9 msg.1-5-9 &&\n' span_id:1095) (Token id:Id.Lit_Chars val:'\tverify_parents $c1 $c2 $c3\n' span_id:1096) ) } ) (C {(test_debug)} {(SQ (Token id:Id.Lit_Chars val:'git log --graph --decorate --oneline --all' span_id:1103))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merges with --ff-only' span_id:1110))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1114) (Token id:Id.Lit_Chars val:'\tgit reset --hard c1 &&\n' span_id:1115) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:1116) (Token id: Id.Lit_Chars val: '\ttest_must_fail git merge --ff-only c2 &&\n' span_id: 1117 ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge --ff-only c3 &&\n' span_id:1118) (Token id: Id.Lit_Chars val: '\ttest_must_fail git merge --ff-only c2 c3 &&\n' span_id: 1119 ) (Token id:Id.Lit_Chars val:'\tgit reset --hard c0 &&\n' span_id:1120) (Token id:Id.Lit_Chars val:'\tgit merge c3 &&\n' span_id:1121) (Token id:Id.Lit_Chars val:'\tverify_head $c3\n' span_id:1122) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merges with merge.ff=only' span_id:1129))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1133) (Token id:Id.Lit_Chars val:'\tgit reset --hard c1 &&\n' span_id:1134) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:1135) (Token id:Id.Lit_Chars val:'\ttest_config merge.ff "only" &&\n' span_id:1136) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge c2 &&\n' span_id:1137) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge c3 &&\n' span_id:1138) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge c2 c3 &&\n' span_id:1139) (Token id:Id.Lit_Chars val:'\tgit reset --hard c0 &&\n' span_id:1140) (Token id:Id.Lit_Chars val:'\tgit merge c3 &&\n' span_id:1141) (Token id:Id.Lit_Chars val:'\tverify_head $c3\n' span_id:1142) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge c0 with c1 (no-commit)' span_id:1149))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1153) (Token id:Id.Lit_Chars val:'\tgit reset --hard c0 &&\n' span_id:1154) (Token id:Id.Lit_Chars val:'\tgit merge --no-commit c1 &&\n' span_id:1155) (Token id:Id.Lit_Chars val:'\tverify_merge file result.1 &&\n' span_id:1156) (Token id:Id.Lit_Chars val:'\tverify_head $c1\n' span_id:1157) ) } ) (C {(test_debug)} {(SQ (Token id:Id.Lit_Chars val:'git log --graph --decorate --oneline --all' span_id:1164))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge c1 with c2 (no-commit)' span_id:1171))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1175) (Token id:Id.Lit_Chars val:'\tgit reset --hard c1 &&\n' span_id:1176) (Token id:Id.Lit_Chars val:'\tgit merge --no-commit c2 &&\n' span_id:1177) (Token id:Id.Lit_Chars val:'\tverify_merge file result.1-5 &&\n' span_id:1178) (Token id:Id.Lit_Chars val:'\tverify_head $c1 &&\n' span_id:1179) (Token id:Id.Lit_Chars val:'\tverify_mergeheads $c2\n' span_id:1180) ) } ) (C {(test_debug)} {(SQ (Token id:Id.Lit_Chars val:'git log --graph --decorate --oneline --all' span_id:1187))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge c1 with c2 and c3 (no-commit)' span_id:1194))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1198) (Token id:Id.Lit_Chars val:'\tgit reset --hard c1 &&\n' span_id:1199) (Token id:Id.Lit_Chars val:'\tgit merge --no-commit c2 c3 &&\n' span_id:1200) (Token id:Id.Lit_Chars val:'\tverify_merge file result.1-5-9 &&\n' span_id:1201) (Token id:Id.Lit_Chars val:'\tverify_head $c1 &&\n' span_id:1202) (Token id:Id.Lit_Chars val:'\tverify_mergeheads $c2 $c3\n' span_id:1203) ) } ) (C {(test_debug)} {(SQ (Token id:Id.Lit_Chars val:'git log --graph --decorate --oneline --all' span_id:1210))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge c0 with c1 (squash)' span_id:1217))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1221) (Token id:Id.Lit_Chars val:'\tgit reset --hard c0 &&\n' span_id:1222) (Token id:Id.Lit_Chars val:'\tgit merge --squash c1 &&\n' span_id:1223) (Token id:Id.Lit_Chars val:'\tverify_merge file result.1 &&\n' span_id:1224) (Token id:Id.Lit_Chars val:'\tverify_head $c0 &&\n' span_id:1225) (Token id:Id.Lit_Chars val:'\tverify_no_mergehead &&\n' span_id:1226) (Token id:Id.Lit_Chars val:'\ttest_cmp squash.1 .git/SQUASH_MSG\n' span_id:1227) ) } ) (C {(test_debug)} {(SQ (Token id:Id.Lit_Chars val:'git log --graph --decorate --oneline --all' span_id:1234))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge c0 with c1 (squash, ff-only)' span_id:1241))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1245) (Token id:Id.Lit_Chars val:'\tgit reset --hard c0 &&\n' span_id:1246) (Token id:Id.Lit_Chars val:'\tgit merge --squash --ff-only c1 &&\n' span_id:1247) (Token id:Id.Lit_Chars val:'\tverify_merge file result.1 &&\n' span_id:1248) (Token id:Id.Lit_Chars val:'\tverify_head $c0 &&\n' span_id:1249) (Token id:Id.Lit_Chars val:'\tverify_no_mergehead &&\n' span_id:1250) (Token id:Id.Lit_Chars val:'\ttest_cmp squash.1 .git/SQUASH_MSG\n' span_id:1251) ) } ) (C {(test_debug)} {(SQ (Token id:Id.Lit_Chars val:'git log --graph --decorate --oneline --all' span_id:1258))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge c1 with c2 (squash)' span_id:1265))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1269) (Token id:Id.Lit_Chars val:'\tgit reset --hard c1 &&\n' span_id:1270) (Token id:Id.Lit_Chars val:'\tgit merge --squash c2 &&\n' span_id:1271) (Token id:Id.Lit_Chars val:'\tverify_merge file result.1-5 &&\n' span_id:1272) (Token id:Id.Lit_Chars val:'\tverify_head $c1 &&\n' span_id:1273) (Token id:Id.Lit_Chars val:'\tverify_no_mergehead &&\n' span_id:1274) (Token id:Id.Lit_Chars val:'\ttest_cmp squash.1-5 .git/SQUASH_MSG\n' span_id:1275) ) } ) (C {(test_debug)} {(SQ (Token id:Id.Lit_Chars val:'git log --graph --decorate --oneline --all' span_id:1282))} ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'unsuccessful merge of c1 with c2 (squash, ff-only)' span_id: 1289 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1293) (Token id:Id.Lit_Chars val:'\tgit reset --hard c1 &&\n' span_id:1294) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge --squash --ff-only c2\n' span_id:1295) ) } ) (C {(test_debug)} {(SQ (Token id:Id.Lit_Chars val:'git log --graph --decorate --oneline --all' span_id:1302))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge c1 with c2 and c3 (squash)' span_id:1309))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1313) (Token id:Id.Lit_Chars val:'\tgit reset --hard c1 &&\n' span_id:1314) (Token id:Id.Lit_Chars val:'\tgit merge --squash c2 c3 &&\n' span_id:1315) (Token id:Id.Lit_Chars val:'\tverify_merge file result.1-5-9 &&\n' span_id:1316) (Token id:Id.Lit_Chars val:'\tverify_head $c1 &&\n' span_id:1317) (Token id:Id.Lit_Chars val:'\tverify_no_mergehead &&\n' span_id:1318) (Token id:Id.Lit_Chars val:'\ttest_cmp squash.1-5-9 .git/SQUASH_MSG\n' span_id:1319) ) } ) (C {(test_debug)} {(SQ (Token id:Id.Lit_Chars val:'git log --graph --decorate --oneline --all' span_id:1326))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge c1 with c2 (no-commit in config)' span_id:1333))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1337) (Token id:Id.Lit_Chars val:'\tgit reset --hard c1 &&\n' span_id:1338) (Token id: Id.Lit_Chars val: '\ttest_config branch.master.mergeoptions "--no-commit" &&\n' span_id: 1339 ) (Token id:Id.Lit_Chars val:'\tgit merge c2 &&\n' span_id:1340) (Token id:Id.Lit_Chars val:'\tverify_merge file result.1-5 &&\n' span_id:1341) (Token id:Id.Lit_Chars val:'\tverify_head $c1 &&\n' span_id:1342) (Token id:Id.Lit_Chars val:'\tverify_mergeheads $c2\n' span_id:1343) ) } ) (C {(test_debug)} {(SQ (Token id:Id.Lit_Chars val:'git log --graph --decorate --oneline --all' span_id:1350))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge c1 with c2 (log in config)' span_id:1357))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1361) (Token id:Id.Lit_Chars val:'\tgit reset --hard c1 &&\n' span_id:1362) (Token id:Id.Lit_Chars val:'\tgit merge --log c2 &&\n' span_id:1363) (Token id: Id.Lit_Chars val: '\tgit show -s --pretty=tformat:%s%n%b >expect &&\n' span_id: 1364 ) (Token id:Id.Lit_Chars val:'\n' span_id:1365) (Token id: Id.Lit_Chars val: '\ttest_config branch.master.mergeoptions "--log" &&\n' span_id: 1366 ) (Token id:Id.Lit_Chars val:'\tgit reset --hard c1 &&\n' span_id:1367) (Token id:Id.Lit_Chars val:'\tgit merge c2 &&\n' span_id:1368) (Token id:Id.Lit_Chars val:'\tgit show -s --pretty=tformat:%s%n%b >actual &&\n' span_id:1369) (Token id:Id.Lit_Chars val:'\n' span_id:1370) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1371) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'merge c1 with c2 (log in config gets overridden)' span_id: 1378 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1382) (Token id:Id.Lit_Chars val:'\tgit reset --hard c1 &&\n' span_id:1383) (Token id:Id.Lit_Chars val:'\tgit merge c2 &&\n' span_id:1384) (Token id: Id.Lit_Chars val: '\tgit show -s --pretty=tformat:%s%n%b >expect &&\n' span_id: 1385 ) (Token id:Id.Lit_Chars val:'\n' span_id:1386) (Token id: Id.Lit_Chars val: '\ttest_config branch.master.mergeoptions "--no-log" &&\n' span_id: 1387 ) (Token id:Id.Lit_Chars val:'\ttest_config merge.log "true" &&\n' span_id:1388) (Token id:Id.Lit_Chars val:'\tgit reset --hard c1 &&\n' span_id:1389) (Token id:Id.Lit_Chars val:'\tgit merge c2 &&\n' span_id:1390) (Token id: Id.Lit_Chars val: '\tgit show -s --pretty=tformat:%s%n%b >actual &&\n' span_id: 1391 ) (Token id:Id.Lit_Chars val:'\n' span_id:1392) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1393) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge c1 with c2 (squash in config)' span_id:1400))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1404) (Token id:Id.Lit_Chars val:'\tgit reset --hard c1 &&\n' span_id:1405) (Token id:Id.Lit_Chars val:'\ttest_config branch.master.mergeoptions "--squash" &&\n' span_id:1406) (Token id:Id.Lit_Chars val:'\tgit merge c2 &&\n' span_id:1407) (Token id:Id.Lit_Chars val:'\tverify_merge file result.1-5 &&\n' span_id:1408) (Token id:Id.Lit_Chars val:'\tverify_head $c1 &&\n' span_id:1409) (Token id:Id.Lit_Chars val:'\tverify_no_mergehead &&\n' span_id:1410) (Token id: Id.Lit_Chars val: '\ttest_cmp squash.1-5 .git/SQUASH_MSG\n' span_id: 1411 ) ) } ) (C {(test_debug)} {(SQ (Token id:Id.Lit_Chars val:'git log --graph --decorate --oneline --all' span_id:1418))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'override config option -n with --summary' span_id:1425))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1429) (Token id:Id.Lit_Chars val:'\tgit reset --hard c1 &&\n' span_id:1430) (Token id:Id.Lit_Chars val:'\ttest_config branch.master.mergeoptions "-n" &&\n' span_id:1431) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:1432) (Token id:Id.Lit_Chars val:'\tgit merge --summary c2 >diffstat.txt &&\n' span_id:1433) (Token id: Id.Lit_Chars val: '\tverify_merge file result.1-5 msg.1-5 &&\n' span_id: 1434 ) (Token id:Id.Lit_Chars val:'\tverify_parents $c1 $c2 &&\n' span_id:1435) (Token id: Id.Lit_Chars val: '\tif ! grep "^ file | *2 +-$" diffstat.txt\n' span_id: 1436 ) (Token id:Id.Lit_Chars val:'\tthen\n' span_id:1437) (Token id: Id.Lit_Chars val: '\t\techo "[OOPS] diffstat was not generated with --summary"\n' span_id: 1438 ) (Token id:Id.Lit_Chars val:'\t\tfalse\n' span_id:1439) (Token id:Id.Lit_Chars val:'\tfi\n' span_id:1440) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'override config option -n with --stat' span_id:1447))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1451) (Token id:Id.Lit_Chars val:'\tgit reset --hard c1 &&\n' span_id:1452) (Token id:Id.Lit_Chars val:'\ttest_config branch.master.mergeoptions "-n" &&\n' span_id:1453) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:1454) (Token id:Id.Lit_Chars val:'\tgit merge --stat c2 >diffstat.txt &&\n' span_id:1455) (Token id: Id.Lit_Chars val: '\tverify_merge file result.1-5 msg.1-5 &&\n' span_id: 1456 ) (Token id:Id.Lit_Chars val:'\tverify_parents $c1 $c2 &&\n' span_id:1457) (Token id: Id.Lit_Chars val: '\tif ! grep "^ file | *2 +-$" diffstat.txt\n' span_id: 1458 ) (Token id:Id.Lit_Chars val:'\tthen\n' span_id:1459) (Token id: Id.Lit_Chars val: '\t\techo "[OOPS] diffstat was not generated with --stat"\n' span_id: 1460 ) (Token id:Id.Lit_Chars val:'\t\tfalse\n' span_id:1461) (Token id:Id.Lit_Chars val:'\tfi\n' span_id:1462) ) } ) (C {(test_debug)} {(SQ (Token id:Id.Lit_Chars val:'git log --graph --decorate --oneline --all' span_id:1469))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'override config option --stat' span_id:1476))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1480) (Token id:Id.Lit_Chars val:'\tgit reset --hard c1 &&\n' span_id:1481) (Token id:Id.Lit_Chars val:'\ttest_config branch.master.mergeoptions "--stat" &&\n' span_id:1482) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:1483) (Token id:Id.Lit_Chars val:'\tgit merge -n c2 >diffstat.txt &&\n' span_id:1484) (Token id: Id.Lit_Chars val: '\tverify_merge file result.1-5 msg.1-5 &&\n' span_id: 1485 ) (Token id:Id.Lit_Chars val:'\tverify_parents $c1 $c2 &&\n' span_id:1486) (Token id: Id.Lit_Chars val: '\tif grep "^ file | *2 +-$" diffstat.txt\n' span_id: 1487 ) (Token id:Id.Lit_Chars val:'\tthen\n' span_id:1488) (Token id: Id.Lit_Chars val: '\t\techo "[OOPS] diffstat was generated"\n' span_id: 1489 ) (Token id:Id.Lit_Chars val:'\t\tfalse\n' span_id:1490) (Token id:Id.Lit_Chars val:'\tfi\n' span_id:1491) ) } ) (C {(test_debug)} {(SQ (Token id:Id.Lit_Chars val:'git log --graph --decorate --oneline --all' span_id:1498))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge c1 with c2 (override --no-commit)' span_id:1505))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1509) (Token id:Id.Lit_Chars val:'\tgit reset --hard c1 &&\n' span_id:1510) (Token id: Id.Lit_Chars val: '\ttest_config branch.master.mergeoptions "--no-commit" &&\n' span_id: 1511 ) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:1512) (Token id:Id.Lit_Chars val:'\tgit merge --commit c2 &&\n' span_id:1513) (Token id:Id.Lit_Chars val:'\tverify_merge file result.1-5 msg.1-5 &&\n' span_id:1514) (Token id:Id.Lit_Chars val:'\tverify_parents $c1 $c2\n' span_id:1515) ) } ) (C {(test_debug)} {(SQ (Token id:Id.Lit_Chars val:'git log --graph --decorate --oneline --all' span_id:1522))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge c1 with c2 (override --squash)' span_id:1529))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1533) (Token id:Id.Lit_Chars val:'\tgit reset --hard c1 &&\n' span_id:1534) (Token id:Id.Lit_Chars val:'\ttest_config branch.master.mergeoptions "--squash" &&\n' span_id:1535) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:1536) (Token id:Id.Lit_Chars val:'\tgit merge --no-squash c2 &&\n' span_id:1537) (Token id: Id.Lit_Chars val: '\tverify_merge file result.1-5 msg.1-5 &&\n' span_id: 1538 ) (Token id:Id.Lit_Chars val:'\tverify_parents $c1 $c2\n' span_id:1539) ) } ) (C {(test_debug)} {(SQ (Token id:Id.Lit_Chars val:'git log --graph --decorate --oneline --all' span_id:1546))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge c0 with c1 (no-ff)' span_id:1553))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1557) (Token id:Id.Lit_Chars val:'\tgit reset --hard c0 &&\n' span_id:1558) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:1559) (Token id:Id.Lit_Chars val:'\tgit merge --no-ff c1 &&\n' span_id:1560) (Token id:Id.Lit_Chars val:'\tverify_merge file result.1 &&\n' span_id:1561) (Token id:Id.Lit_Chars val:'\tverify_parents $c0 $c1\n' span_id:1562) ) } ) (C {(test_debug)} {(SQ (Token id:Id.Lit_Chars val:'git log --graph --decorate --oneline --all' span_id:1569))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge c0 with c1 (merge.ff=false)' span_id:1576))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1580) (Token id:Id.Lit_Chars val:'\tgit reset --hard c0 &&\n' span_id:1581) (Token id:Id.Lit_Chars val:'\ttest_config merge.ff "false" &&\n' span_id:1582) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:1583) (Token id:Id.Lit_Chars val:'\tgit merge c1 &&\n' span_id:1584) (Token id:Id.Lit_Chars val:'\tverify_merge file result.1 &&\n' span_id:1585) (Token id:Id.Lit_Chars val:'\tverify_parents $c0 $c1\n' span_id:1586) ) } ) (C {(test_debug)} {(SQ (Token id:Id.Lit_Chars val:'git log --graph --decorate --oneline --all' span_id:1592))} ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'combine branch.master.mergeoptions with merge.ff' span_id: 1599 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1603) (Token id:Id.Lit_Chars val:'\tgit reset --hard c0 &&\n' span_id:1604) (Token id:Id.Lit_Chars val:'\ttest_config branch.master.mergeoptions "--ff" &&\n' span_id:1605) (Token id:Id.Lit_Chars val:'\ttest_config merge.ff "false" &&\n' span_id:1606) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:1607) (Token id:Id.Lit_Chars val:'\tgit merge c1 &&\n' span_id:1608) (Token id:Id.Lit_Chars val:'\tverify_merge file result.1 &&\n' span_id:1609) (Token id:Id.Lit_Chars val:'\tverify_parents "$c0"\n' span_id:1610) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'tolerate unknown values for merge.ff' span_id:1617))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1621) (Token id:Id.Lit_Chars val:'\tgit reset --hard c0 &&\n' span_id:1622) (Token id:Id.Lit_Chars val:'\ttest_config merge.ff "something-new" &&\n' span_id:1623) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:1624) (Token id:Id.Lit_Chars val:'\tgit merge c1 2>message &&\n' span_id:1625) (Token id:Id.Lit_Chars val:'\tverify_head "$c1" &&\n' span_id:1626) (Token id:Id.Lit_Chars val:'\ttest_cmp empty message\n' span_id:1627) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'combining --squash and --no-ff is refused' span_id:1634))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1638) (Token id:Id.Lit_Chars val:'\tgit reset --hard c0 &&\n' span_id:1639) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge --squash --no-ff c1 &&\n' span_id:1640) (Token id: Id.Lit_Chars val: '\ttest_must_fail git merge --no-ff --squash c1\n' span_id: 1641 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'option --ff-only overwrites --no-ff' span_id:1648))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1652) (Token id:Id.Lit_Chars val:'\tgit merge --no-ff --ff-only c1 &&\n' span_id:1653) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge --no-ff --ff-only c2\n' span_id:1654) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'option --no-ff overrides merge.ff=only config' span_id:1661))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1665) (Token id:Id.Lit_Chars val:'\tgit reset --hard c0 &&\n' span_id:1666) (Token id:Id.Lit_Chars val:'\ttest_config merge.ff only &&\n' span_id:1667) (Token id:Id.Lit_Chars val:'\tgit merge --no-ff c1\n' span_id:1668) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge c0 with c1 (ff overrides no-ff)' span_id:1675))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1679) (Token id:Id.Lit_Chars val:'\tgit reset --hard c0 &&\n' span_id:1680) (Token id:Id.Lit_Chars val:'\ttest_config branch.master.mergeoptions "--no-ff" &&\n' span_id:1681) (Token id:Id.Lit_Chars val:'\tgit merge --ff c1 &&\n' span_id:1682) (Token id:Id.Lit_Chars val:'\tverify_merge file result.1 &&\n' span_id:1683) (Token id:Id.Lit_Chars val:'\tverify_head $c1\n' span_id:1684) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge log message' span_id:1691))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1695) (Token id:Id.Lit_Chars val:'\tgit reset --hard c0 &&\n' span_id:1696) (Token id:Id.Lit_Chars val:'\tgit merge --no-log c2 &&\n' span_id:1697) (Token id: Id.Lit_Chars val: '\tgit show -s --pretty=format:%b HEAD >msg.act &&\n' span_id: 1698 ) (Token id:Id.Lit_Chars val:'\ttest_cmp msg.nologff msg.act &&\n' span_id:1699) (Token id:Id.Lit_Chars val:'\n' span_id:1700) (Token id:Id.Lit_Chars val:'\tgit reset --hard c0 &&\n' span_id:1701) (Token id: Id.Lit_Chars val: '\ttest_config branch.master.mergeoptions "--no-ff" &&\n' span_id: 1702 ) (Token id:Id.Lit_Chars val:'\tgit merge --no-log c2 &&\n' span_id:1703) (Token id: Id.Lit_Chars val: '\tgit show -s --pretty=format:%b HEAD >msg.act &&\n' span_id: 1704 ) (Token id:Id.Lit_Chars val:'\ttest_cmp msg.nolognoff msg.act &&\n' span_id:1705) (Token id:Id.Lit_Chars val:'\n' span_id:1706) (Token id:Id.Lit_Chars val:'\tgit merge --log c3 &&\n' span_id:1707) (Token id: Id.Lit_Chars val: '\tgit show -s --pretty=format:%b HEAD >msg.act &&\n' span_id: 1708 ) (Token id:Id.Lit_Chars val:'\ttest_cmp msg.log msg.act &&\n' span_id:1709) (Token id:Id.Lit_Chars val:'\n' span_id:1710) (Token id:Id.Lit_Chars val:'\tgit reset --hard HEAD^ &&\n' span_id:1711) (Token id:Id.Lit_Chars val:'\ttest_config merge.log "yes" &&\n' span_id:1712) (Token id:Id.Lit_Chars val:'\tgit merge c3 &&\n' span_id:1713) (Token id: Id.Lit_Chars val: '\tgit show -s --pretty=format:%b HEAD >msg.act &&\n' span_id: 1714 ) (Token id:Id.Lit_Chars val:'\ttest_cmp msg.log msg.act\n' span_id:1715) ) } ) (C {(test_debug)} {(SQ (Token id:Id.Lit_Chars val:'git log --graph --decorate --oneline --all' span_id:1722))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge c1 with c0, c2, c0, and c1' span_id:1729))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1733) (Token id:Id.Lit_Chars val:' git reset --hard c1 &&\n' span_id:1734) (Token id:Id.Lit_Chars val:' test_tick &&\n' span_id:1735) (Token id:Id.Lit_Chars val:' git merge c0 c2 c0 c1 &&\n' span_id:1736) (Token id:Id.Lit_Chars val:' verify_merge file result.1-5 &&\n' span_id:1737) (Token id:Id.Lit_Chars val:' verify_parents $c1 $c2\n' span_id:1738) ) } ) (C {(test_debug)} {(SQ (Token id:Id.Lit_Chars val:'git log --graph --decorate --oneline --all' span_id:1745))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge c1 with c0, c2, c0, and c1' span_id:1752))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1756) (Token id:Id.Lit_Chars val:' git reset --hard c1 &&\n' span_id:1757) (Token id:Id.Lit_Chars val:' test_tick &&\n' span_id:1758) (Token id:Id.Lit_Chars val:' git merge c0 c2 c0 c1 &&\n' span_id:1759) (Token id:Id.Lit_Chars val:' verify_merge file result.1-5 &&\n' span_id:1760) (Token id:Id.Lit_Chars val:' verify_parents $c1 $c2\n' span_id:1761) ) } ) (C {(test_debug)} {(SQ (Token id:Id.Lit_Chars val:'git log --graph --decorate --oneline --all' span_id:1768))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge c1 with c1 and c2' span_id:1775))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1779) (Token id:Id.Lit_Chars val:' git reset --hard c1 &&\n' span_id:1780) (Token id:Id.Lit_Chars val:' test_tick &&\n' span_id:1781) (Token id:Id.Lit_Chars val:' git merge c1 c2 &&\n' span_id:1782) (Token id:Id.Lit_Chars val:' verify_merge file result.1-5 &&\n' span_id:1783) (Token id:Id.Lit_Chars val:' verify_parents $c1 $c2\n' span_id:1784) ) } ) (C {(test_debug)} {(SQ (Token id:Id.Lit_Chars val:'git log --graph --decorate --oneline --all' span_id:1791))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge fast-forward in a dirty tree' span_id:1798))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1802) (Token id:Id.Lit_Chars val:' git reset --hard c0 &&\n' span_id:1803) (Token id:Id.Lit_Chars val:' mv file file1 &&\n' span_id:1804) (Token id:Id.Lit_Chars val:' cat file1 >file &&\n' span_id:1805) (Token id:Id.Lit_Chars val:' rm -f file1 &&\n' span_id:1806) (Token id:Id.Lit_Chars val:' git merge c2\n' span_id:1807) ) } ) (C {(test_debug)} {(SQ (Token id:Id.Lit_Chars val:'git log --graph --decorate --oneline --all' span_id:1814))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'in-index merge' span_id:1821))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1825) (Token id:Id.Lit_Chars val:'\tgit reset --hard c0 &&\n' span_id:1826) (Token id:Id.Lit_Chars val:'\tgit merge --no-ff -s resolve c1 >out &&\n' span_id:1827) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep "Wonderful." out &&\n' span_id:1828) (Token id:Id.Lit_Chars val:'\tverify_parents $c0 $c1\n' span_id:1829) ) } ) (C {(test_debug)} {(SQ (Token id:Id.Lit_Chars val:'git log --graph --decorate --oneline --all' span_id:1836))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'refresh the index before merging' span_id:1843))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1847) (Token id:Id.Lit_Chars val:'\tgit reset --hard c1 &&\n' span_id:1848) (Token id:Id.Lit_Chars val:'\tcp file file.n && mv -f file.n file &&\n' span_id:1849) (Token id:Id.Lit_Chars val:'\tgit merge c3\n' span_id:1850) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1856) fd: -1 arg_word: {(expected.branch)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1859) fd: -1 here_begin: {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:1860)) (OF) } here_end_span_id: 1864 stdin_parts: [("Merge branch 'c5-branch' (early part)\n")] ) ] ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1867) fd: -1 arg_word: {(expected.tag)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1870) fd: -1 here_begin: {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:1871)) (OF) } here_end_span_id: 1875 stdin_parts: [("Merge commit 'c5~1'\n")] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge early part of c2' span_id:1880))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1884) (Token id:Id.Lit_Chars val:'\tgit reset --hard c3 &&\n' span_id:1885) (Token id:Id.Lit_Chars val:'\techo c4 >c4.c &&\n' span_id:1886) (Token id:Id.Lit_Chars val:'\tgit add c4.c &&\n' span_id:1887) (Token id:Id.Lit_Chars val:'\tgit commit -m c4 &&\n' span_id:1888) (Token id:Id.Lit_Chars val:'\tgit tag c4 &&\n' span_id:1889) (Token id:Id.Lit_Chars val:'\techo c5 >c5.c &&\n' span_id:1890) (Token id:Id.Lit_Chars val:'\tgit add c5.c &&\n' span_id:1891) (Token id:Id.Lit_Chars val:'\tgit commit -m c5 &&\n' span_id:1892) (Token id:Id.Lit_Chars val:'\tgit tag c5 &&\n' span_id:1893) (Token id:Id.Lit_Chars val:'\tgit reset --hard c3 &&\n' span_id:1894) (Token id:Id.Lit_Chars val:'\techo c6 >c6.c &&\n' span_id:1895) (Token id:Id.Lit_Chars val:'\tgit add c6.c &&\n' span_id:1896) (Token id:Id.Lit_Chars val:'\tgit commit -m c6 &&\n' span_id:1897) (Token id:Id.Lit_Chars val:'\tgit tag c6 &&\n' span_id:1898) (Token id:Id.Lit_Chars val:'\tgit branch -f c5-branch c5 &&\n' span_id:1899) (Token id:Id.Lit_Chars val:'\tgit merge c5-branch~1 &&\n' span_id:1900) (Token id: Id.Lit_Chars val: '\tgit show -s --pretty=tformat:%s HEAD >actual.branch &&\n' span_id: 1901 ) (Token id:Id.Lit_Chars val:'\tgit reset --keep HEAD^ &&\n' span_id:1902) (Token id:Id.Lit_Chars val:'\tgit merge c5~1 &&\n' span_id:1903) (Token id:Id.Lit_Chars val:'\tgit show -s --pretty=tformat:%s HEAD >actual.tag &&\n' span_id:1904) (Token id: Id.Lit_Chars val: '\ttest_cmp expected.branch actual.branch &&\n' span_id: 1905 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected.tag actual.tag\n' span_id:1906) ) } ) (C {(test_debug)} {(SQ (Token id:Id.Lit_Chars val:'git log --graph --decorate --oneline --all' span_id:1913))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge --no-ff --no-commit && commit' span_id:1920))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1924) (Token id:Id.Lit_Chars val:'\tgit reset --hard c0 &&\n' span_id:1925) (Token id:Id.Lit_Chars val:'\tgit merge --no-ff --no-commit c1 &&\n' span_id:1926) (Token id:Id.Lit_Chars val:'\tEDITOR=: git commit &&\n' span_id:1927) (Token id:Id.Lit_Chars val:'\tverify_parents $c0 $c1\n' span_id:1928) ) } ) (C {(test_debug)} {(SQ (Token id:Id.Lit_Chars val:'git log --graph --decorate --oneline --all' span_id:1935))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'amending no-ff merge commit' span_id:1942))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1946) (Token id:Id.Lit_Chars val:'\tEDITOR=: git commit --amend &&\n' span_id:1947) (Token id:Id.Lit_Chars val:'\tverify_parents $c0 $c1\n' span_id:1948) ) } ) (C {(test_debug)} {(SQ (Token id:Id.Lit_Chars val:'git log --graph --decorate --oneline --all' span_id:1955))} ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1961) fd: -1 arg_word: {(editor)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:1964) fd: -1 here_begin: {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:1965)) (OF) } here_end_span_id: 1977 stdin_parts: [ ('#!/bin/sh\n') ('# Add a new message string that was not in the template\n') ('(\n') ('\techo "Merge work done on the side branch c1"\n') ('\techo\n') ('\tcat <"$1"\n') (') >"$1.tmp" && mv "$1.tmp" "$1"\n') ('# strip comments and blank lines from end of message\n') ('sed -e \'/^#/d\' < "$1" | sed -e :a -e \'/^\\n*$/{$d;N;ba\' -e \'}\' > expected\n') ] ) ] ) (C {(chmod)} {(755)} {(editor)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge --no-ff --edit' span_id:1988))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1992) (Token id:Id.Lit_Chars val:'\tgit reset --hard c0 &&\n' span_id:1993) (Token id:Id.Lit_Chars val:'\tEDITOR=./editor git merge --no-ff --edit c1 &&\n' span_id:1994) (Token id:Id.Lit_Chars val:'\tverify_parents $c0 $c1 &&\n' span_id:1995) (Token id:Id.Lit_Chars val:'\tgit cat-file commit HEAD >raw &&\n' span_id:1996) (Token id: Id.Lit_Chars val: '\tgrep "work done on the side branch" raw &&\n' span_id: 1997 ) (Token id:Id.Lit_Chars val:'\tsed "1,/^$/d" >actual raw &&\n' span_id:1998) (Token id:Id.Lit_Chars val:'\ttest_cmp actual expected\n' span_id:1999) ) } ) (C {(test_expect_success)} {(GPG)} {(SQ (Token id:Id.Lit_Chars val:'merge --ff-only tag' span_id:2008))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2012) (Token id:Id.Lit_Chars val:'\tgit reset --hard c0 &&\n' span_id:2013) (Token id:Id.Lit_Chars val:'\tgit commit --allow-empty -m "A newer commit" &&\n' span_id:2014) (Token id: Id.Lit_Chars val: '\tgit tag -s -m "A newer commit" signed &&\n' span_id: 2015 ) (Token id:Id.Lit_Chars val:'\tgit reset --hard c0 &&\n' span_id:2016) (Token id:Id.Lit_Chars val:'\n' span_id:2017) (Token id:Id.Lit_Chars val:'\tgit merge --ff-only signed &&\n' span_id:2018) (Token id:Id.Lit_Chars val:'\tgit rev-parse signed^0 >expect &&\n' span_id:2019) (Token id:Id.Lit_Chars val:'\tgit rev-parse HEAD >actual &&\n' span_id:2020) (Token id:Id.Lit_Chars val:'\ttest_cmp actual expect\n' span_id:2021) ) } ) (C {(test_expect_success)} {(GPG)} {(SQ (Token id:Id.Lit_Chars val:'merge --no-edit tag should skip editor' span_id:2030))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2034) (Token id:Id.Lit_Chars val:'\tgit reset --hard c0 &&\n' span_id:2035) (Token id:Id.Lit_Chars val:'\tgit commit --allow-empty -m "A newer commit" &&\n' span_id:2036) (Token id: Id.Lit_Chars val: '\tgit tag -f -s -m "A newer commit" signed &&\n' span_id: 2037 ) (Token id:Id.Lit_Chars val:'\tgit reset --hard c0 &&\n' span_id:2038) (Token id:Id.Lit_Chars val:'\n' span_id:2039) (Token id:Id.Lit_Chars val:'\tEDITOR=false git merge --no-edit signed &&\n' span_id:2040) (Token id:Id.Lit_Chars val:'\tgit rev-parse signed^0 >expect &&\n' span_id:2041) (Token id:Id.Lit_Chars val:'\tgit rev-parse HEAD^2 >actual &&\n' span_id:2042) (Token id:Id.Lit_Chars val:'\ttest_cmp actual expect\n' span_id:2043) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'set up mod-256 conflict scenario' span_id:2050))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2054) (Token id:Id.Lit_Chars val:'\t# 256 near-identical stanzas...\n' span_id:2055) (Token id:Id.Lit_Chars val:'\tfor i in $(test_seq 1 256); do\n' span_id:2056) (Token id:Id.Lit_Chars val:'\t\tfor j in 1 2 3 4 5; do\n' span_id:2057) (Token id:Id.Lit_Chars val:'\t\t\techo $i-$j\n' span_id:2058) (Token id:Id.Lit_Chars val:'\t\tdone\n' span_id:2059) (Token id:Id.Lit_Chars val:'\tdone >file &&\n' span_id:2060) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:2061) (Token id:Id.Lit_Chars val:'\tgit commit -m base &&\n' span_id:2062) (Token id:Id.Lit_Chars val:'\n' span_id:2063) (Token id:Id.Lit_Chars val:'\t# one side changes the first line of each to "master"\n' span_id:2064) (Token id:Id.Lit_Chars val:'\tsed s/-1/-master/ <file >tmp &&\n' span_id:2065) (Token id:Id.Lit_Chars val:'\tmv tmp file &&\n' span_id:2066) (Token id:Id.Lit_Chars val:'\tgit commit -am master &&\n' span_id:2067) (Token id:Id.Lit_Chars val:'\n' span_id:2068) (Token id: Id.Lit_Chars val: '\t# and the other to "side"; merging the two will\n' span_id: 2069 ) (Token id:Id.Lit_Chars val:'\t# yield 256 separate conflicts\n' span_id:2070) (Token id:Id.Lit_Chars val:'\tgit checkout -b side HEAD^ &&\n' span_id:2071) (Token id:Id.Lit_Chars val:'\tsed s/-1/-side/ <file >tmp &&\n' span_id:2072) (Token id:Id.Lit_Chars val:'\tmv tmp file &&\n' span_id:2073) (Token id:Id.Lit_Chars val:'\tgit commit -am side\n' span_id:2074) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge detects mod-256 conflicts (recursive)' span_id:2081))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2085) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:2086) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge -s recursive master\n' span_id:2087) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge detects mod-256 conflicts (resolve)' span_id:2094))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2098) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:2099) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge -s resolve master\n' span_id:2100) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge nothing into void' span_id:2107))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:2111) (Token id:Id.Lit_Chars val:'\tgit init void &&\n' span_id:2112) (Token id:Id.Lit_Chars val:'\t(\n' span_id:2113) (Token id:Id.Lit_Chars val:'\t\tcd void &&\n' span_id:2114) (Token id:Id.Lit_Chars val:'\t\tgit remote add up .. &&\n' span_id:2115) (Token id:Id.Lit_Chars val:'\t\tgit fetch up &&\n' span_id:2116) (Token id:Id.Lit_Chars val:'\t\ttest_must_fail git merge FETCH_HEAD\n' span_id:2117) (Token id:Id.Lit_Chars val:'\t)\n' span_id:2118) ) } ) (C {(test_done)}) ] )