(command.CommandList children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:test_description spids:[21]) op: Equal rhs: {(SQ <'Test merging of notes trees'>)} spids: [21] ) ] spids: [21] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(setup)} { (SQ <'\n'> <'\ttest_commit 1st &&\n'> <'\ttest_commit 2nd &&\n'> <'\ttest_commit 3rd &&\n'> <'\ttest_commit 4th &&\n'> <'\ttest_commit 5th &&\n'> <'\t# Create notes on 4 first commits\n'> <'\tgit config core.notesRef refs/notes/x &&\n'> <'\tgit notes add -m "Notes on 1st commit" 1st &&\n'> <'\tgit notes add -m "Notes on 2nd commit" 2nd &&\n'> <'\tgit notes add -m "Notes on 3rd commit" 3rd &&\n'> <'\tgit notes add -m "Notes on 4th commit" 4th &&\n'> <'\t# Copy notes to remote-notes\n'> <'\tgit fetch . refs/notes/*:refs/remote-notes/origin/*\n'> ) } ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:commit_sha1 spids:[54]) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(git)} {(rev-parse)} {(1st) (Lit_Other '^') (Lit_LBrace '{') (commit) (Lit_RBrace '}')} ) ] ) left_token: <Left_CommandSub '$('> spids: [55 65] ) } spids: [54] ) ] spids: [54] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:commit_sha2 spids:[67]) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(git)} {(rev-parse)} {(2nd) (Lit_Other '^') (Lit_LBrace '{') (commit) (Lit_RBrace '}')} ) ] ) left_token: <Left_CommandSub '$('> spids: [68 78] ) } spids: [67] ) ] spids: [67] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:commit_sha3 spids:[80]) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(git)} {(rev-parse)} {(3rd) (Lit_Other '^') (Lit_LBrace '{') (commit) (Lit_RBrace '}')} ) ] ) left_token: <Left_CommandSub '$('> spids: [81 91] ) } spids: [80] ) ] spids: [80] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:commit_sha4 spids:[93]) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(git)} {(rev-parse)} {(4th) (Lit_Other '^') (Lit_LBrace '{') (commit) (Lit_RBrace '}')} ) ] ) left_token: <Left_CommandSub '$('> spids: [94 104] ) } spids: [93] ) ] spids: [93] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:commit_sha5 spids:[106]) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(git)} {(rev-parse)} {(5th) (Lit_Other '^') (Lit_LBrace '{') (commit) (Lit_RBrace '}')} ) ] ) left_token: <Left_CommandSub '$('> spids: [107 117] ) } spids: [106] ) ] spids: [106] ) (command.FuncDef name: verify_notes body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:notes_ref spids:[128]) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [128] ) ] spids: [128] ) (command.AndOr ops: [Op_DAmp Op_DAmp Op_DAmp] children: [ (command.Pipeline children: [ (C {(git)} {(-c)} {(core.notesRef) (Lit_Other '=') (DQ (refs/notes/) ($ VSub_Name '$notes_ref'))} {(notes)} ) (command.SimpleCommand words: [{(sort)}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ (output_notes_) ($ VSub_Name '$notes_ref'))} ) ] ) ] negated: F ) (C {(test_cmp)} {(DQ (expect_notes_) ($ VSub_Name '$notes_ref'))} {(DQ (output_notes_) ($ VSub_Name '$notes_ref'))} ) (command.SimpleCommand words: [ {(git)} {(-c)} {(core.notesRef) (Lit_Other '=') (DQ (refs/notes/) ($ VSub_Name '$notes_ref'))} {(log)} {(--format) (Lit_Other '=') (DQ ('%H %s%n%N'))} ] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ (output_log_) ($ VSub_Name '$notes_ref'))} ) ] ) (C {(test_cmp)} {(DQ (expect_log_) ($ VSub_Name '$notes_ref'))} {(DQ (output_log_) ($ VSub_Name '$notes_ref'))} ) ] ) ] spids: [125] ) spids: [120 124] ) (command.Pipeline children: [ (command.SimpleCommand words: [{(cat)}] redirects: [ (redir.HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 246 stdin_parts: [ ('5e93d24084d32e1cb61f7070505b9d2530cca987 ') ($ VSub_Name '$commit_sha4') ('\n') ('8366731eeee53787d2bdf8fc1eff7d94757e8da0 ') ($ VSub_Name '$commit_sha3') ('\n') ('eede89064cd42441590d6afec6c37b321ada3389 ') ($ VSub_Name '$commit_sha2') ('\n') ('daa55ffad6cb99bf64226532147ffcaf5ce8bdd1 ') ($ VSub_Name '$commit_sha1') ('\n') ] ) ] ) (command.SimpleCommand words: [{(sort)}] redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect_notes_x)})] ) ] negated: F ) (command.SimpleCommand words: [{(cat)}] redirects: [ (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect_log_x)}) (redir.HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 276 stdin_parts: [ ($ VSub_Name '$commit_sha5') (' 5th\n') ('\n') ($ VSub_Name '$commit_sha4') (' 4th\n') ('Notes on 4th commit\n') ('\n') ($ VSub_Name '$commit_sha3') (' 3rd\n') ('Notes on 3rd commit\n') ('\n') ($ VSub_Name '$commit_sha2') (' 2nd\n') ('Notes on 2nd commit\n') ('\n') ($ VSub_Name '$commit_sha1') (' 1st\n') ('Notes on 1st commit\n') ('\n') ] ) ] ) (C {(test_expect_success)} {(SQ <'verify initial notes (x)'>)} {(SQ <'\n'> <'\tverify_notes x\n'>)}) (C {(cp)} {(expect_notes_x)} {(expect_notes_y)}) (C {(cp)} {(expect_notes_x)} {(expect_notes_v)}) (C {(cp)} {(expect_log_x)} {(expect_log_y)}) (C {(cp)} {(expect_log_x)} {(expect_log_v)}) (C {(test_expect_success)} {(SQ <'fail to merge empty notes ref into empty notes ref (z => y)'>)} {(SQ <'\n'> <'\ttest_must_fail git -c "core.notesRef=refs/notes/y" notes merge z\n'>)} ) (C {(test_expect_success)} {(SQ <'fail to merge into various non-notes refs'>)} { (SQ <'\n'> <'\ttest_must_fail git -c "core.notesRef=refs/notes" notes merge x &&\n'> <'\ttest_must_fail git -c "core.notesRef=refs/notes/" notes merge x &&\n'> <'\tmkdir -p .git/refs/notes/dir &&\n'> <'\ttest_must_fail git -c "core.notesRef=refs/notes/dir" notes merge x &&\n'> <'\ttest_must_fail git -c "core.notesRef=refs/notes/dir/" notes merge x &&\n'> <'\ttest_must_fail git -c "core.notesRef=refs/heads/master" notes merge x &&\n'> <'\ttest_must_fail git -c "core.notesRef=refs/notes/y:" notes merge x &&\n'> <'\ttest_must_fail git -c "core.notesRef=refs/notes/y:foo" notes merge x &&\n'> <'\ttest_must_fail git -c "core.notesRef=refs/notes/foo^{bar" notes merge x\n'> ) } ) (C {(test_expect_success)} {(SQ <'merge non-notes ref into empty notes ref (remote-notes/origin/x => v)'>)} { (SQ <'\n'> <'\tgit config core.notesRef refs/notes/v &&\n'> <'\tgit notes merge refs/remote-notes/origin/x &&\n'> <'\tverify_notes v &&\n'> <'\t# refs/remote-notes/origin/x and v should point to the same notes commit\n'> <'\ttest "$(git rev-parse refs/remote-notes/origin/x)" = "$(git rev-parse refs/notes/v)"\n'> ) } ) (C {(test_expect_success)} {(SQ <'merge notes into empty notes ref (x => y)'>)} { (SQ <'\n'> <'\tgit config core.notesRef refs/notes/y &&\n'> <'\tgit notes merge x &&\n'> <'\tverify_notes y &&\n'> <'\t# x and y should point to the same notes commit\n'> <'\ttest "$(git rev-parse refs/notes/x)" = "$(git rev-parse refs/notes/y)"\n'> ) } ) (C {(test_expect_success)} {(SQ <'merge empty notes ref (z => y)'>)} { (SQ <'\n'> <'\tgit notes merge z &&\n'> <'\t# y should not change (still == x)\n'> <'\ttest "$(git rev-parse refs/notes/x)" = "$(git rev-parse refs/notes/y)"\n'> ) } ) (C {(test_expect_success)} {(SQ <'change notes on other notes ref (y)'>)} { (SQ <'\n'> <'\t# Not touching notes to 1st commit\n'> <'\tgit notes remove 2nd &&\n'> <'\tgit notes append -m "More notes on 3rd commit" 3rd &&\n'> <'\tgit notes add -f -m "New notes on 4th commit" 4th &&\n'> <'\tgit notes add -m "Notes on 5th commit" 5th\n'> ) } ) (C {(test_expect_success)} {(SQ <'merge previous notes commit (y^ => y) => No-op'>)} { (SQ <'\n'> <'\tpre_state="$(git rev-parse refs/notes/y)" &&\n'> <'\tgit notes merge y^ &&\n'> <'\t# y should not move\n'> <'\ttest "$pre_state" = "$(git rev-parse refs/notes/y)"\n'> ) } ) (command.Pipeline children: [ (command.SimpleCommand words: [{(cat)}] redirects: [ (redir.HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 449 stdin_parts: [ ('0f2efbd00262f2fd41dfae33df8765618eeacd99 ') ($ VSub_Name '$commit_sha5') ('\n') ('dec2502dac3ea161543f71930044deff93fa945c ') ($ VSub_Name '$commit_sha4') ('\n') ('4069cdb399fd45463ec6eef8e051a16a03592d91 ') ($ VSub_Name '$commit_sha3') ('\n') ('daa55ffad6cb99bf64226532147ffcaf5ce8bdd1 ') ($ VSub_Name '$commit_sha1') ('\n') ] ) ] ) (command.SimpleCommand words: [{(sort)}] redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect_notes_y)})] ) ] negated: F ) (command.SimpleCommand words: [{(cat)}] redirects: [ (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect_log_y)}) (redir.HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 481 stdin_parts: [ ($ VSub_Name '$commit_sha5') (' 5th\n') ('Notes on 5th commit\n') ('\n') ($ VSub_Name '$commit_sha4') (' 4th\n') ('New notes on 4th commit\n') ('\n') ($ VSub_Name '$commit_sha3') (' 3rd\n') ('Notes on 3rd commit\n') ('\n') ('More notes on 3rd commit\n') ('\n') ($ VSub_Name '$commit_sha2') (' 2nd\n') ('\n') ($ VSub_Name '$commit_sha1') (' 1st\n') ('Notes on 1st commit\n') ('\n') ] ) ] ) (C {(test_expect_success)} {(SQ <'verify changed notes on other notes ref (y)'>)} {(SQ <'\n'> <'\tverify_notes y\n'>)} ) (C {(test_expect_success)} {(SQ <'verify unchanged notes on original notes ref (x)'>)} {(SQ <'\n'> <'\tverify_notes x\n'>)} ) (C {(test_expect_success)} {(SQ <'merge original notes (x) into changed notes (y) => No-op'>)} { (SQ <'\n'> <'\tgit notes merge -vvv x &&\n'> <'\tverify_notes y &&\n'> <'\tverify_notes x\n'>) } ) (C {(cp)} {(expect_notes_y)} {(expect_notes_x)}) (C {(cp)} {(expect_log_y)} {(expect_log_x)}) (C {(test_expect_success)} {(SQ <'merge changed (y) into original (x) => Fast-forward'>)} { (SQ <'\n'> <'\tgit config core.notesRef refs/notes/x &&\n'> <'\tgit notes merge y &&\n'> <'\tverify_notes x &&\n'> <'\tverify_notes y &&\n'> <'\t# x and y should point to same the notes commit\n'> <'\ttest "$(git rev-parse refs/notes/x)" = "$(git rev-parse refs/notes/y)"\n'> ) } ) (C {(test_expect_success)} {(SQ <'merge empty notes ref (z => y)'>)} { (SQ <'\n'> <'\t# Prepare empty (but valid) notes ref (z)\n'> <'\tgit config core.notesRef refs/notes/z &&\n'> <'\tgit notes add -m "foo" &&\n'> <'\tgit notes remove &&\n'> <'\tgit notes >output_notes_z &&\n'> <'\ttest_cmp /dev/null output_notes_z &&\n'> <'\t# Do the merge (z => y)\n'> <'\tgit config core.notesRef refs/notes/y &&\n'> <'\tgit notes merge z &&\n'> <'\tverify_notes y &&\n'> <'\t# y should no longer point to the same notes commit as x\n'> <'\ttest "$(git rev-parse refs/notes/x)" != "$(git rev-parse refs/notes/y)"\n'> ) } ) (command.Pipeline children: [ (command.SimpleCommand words: [{(cat)}] redirects: [ (redir.HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 602 stdin_parts: [ ('0f2efbd00262f2fd41dfae33df8765618eeacd99 ') ($ VSub_Name '$commit_sha5') ('\n') ('dec2502dac3ea161543f71930044deff93fa945c ') ($ VSub_Name '$commit_sha4') ('\n') ('4069cdb399fd45463ec6eef8e051a16a03592d91 ') ($ VSub_Name '$commit_sha3') ('\n') ('d000d30e6ddcfce3a8122c403226a2ce2fd04d9d ') ($ VSub_Name '$commit_sha2') ('\n') ('43add6bd0c8c0bc871ac7991e0f5573cfba27804 ') ($ VSub_Name '$commit_sha1') ('\n') ] ) ] ) (command.SimpleCommand words: [{(sort)}] redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect_notes_y)})] ) ] negated: F ) (command.SimpleCommand words: [{(cat)}] redirects: [ (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect_log_y)}) (redir.HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 637 stdin_parts: [ ($ VSub_Name '$commit_sha5') (' 5th\n') ('Notes on 5th commit\n') ('\n') ($ VSub_Name '$commit_sha4') (' 4th\n') ('New notes on 4th commit\n') ('\n') ($ VSub_Name '$commit_sha3') (' 3rd\n') ('Notes on 3rd commit\n') ('\n') ('More notes on 3rd commit\n') ('\n') ($ VSub_Name '$commit_sha2') (' 2nd\n') ('New notes on 2nd commit\n') ('\n') ($ VSub_Name '$commit_sha1') (' 1st\n') ('Notes on 1st commit\n') ('\n') ('More notes on 1st commit\n') ('\n') ] ) ] ) (C {(test_expect_success)} {(SQ <'change notes on other notes ref (y)'>)} { (SQ <'\n'> <'\t# Append to 1st commit notes\n'> <'\tgit notes append -m "More notes on 1st commit" 1st &&\n'> <'\t# Add new notes to 2nd commit\n'> <'\tgit notes add -m "New notes on 2nd commit" 2nd &&\n'> <'\tverify_notes y\n'> ) } ) (command.Pipeline children: [ (command.SimpleCommand words: [{(cat)}] redirects: [ (redir.HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 677 stdin_parts: [ ('0f2efbd00262f2fd41dfae33df8765618eeacd99 ') ($ VSub_Name '$commit_sha5') ('\n') ('1f257a3a90328557c452f0817d6cc50c89d315d4 ') ($ VSub_Name '$commit_sha4') ('\n') ('daa55ffad6cb99bf64226532147ffcaf5ce8bdd1 ') ($ VSub_Name '$commit_sha1') ('\n') ] ) ] ) (command.SimpleCommand words: [{(sort)}] redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect_notes_x)})] ) ] negated: F ) (command.SimpleCommand words: [{(cat)}] redirects: [ (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect_log_x)}) (redir.HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 708 stdin_parts: [ ($ VSub_Name '$commit_sha5') (' 5th\n') ('Notes on 5th commit\n') ('\n') ($ VSub_Name '$commit_sha4') (' 4th\n') ('New notes on 4th commit\n') ('\n') ('More notes on 4th commit\n') ('\n') ($ VSub_Name '$commit_sha3') (' 3rd\n') ('\n') ($ VSub_Name '$commit_sha2') (' 2nd\n') ('\n') ($ VSub_Name '$commit_sha1') (' 1st\n') ('Notes on 1st commit\n') ('\n') ] ) ] ) (C {(test_expect_success)} {(SQ <'change notes on notes ref (x)'>)} { (SQ <'\n'> <'\tgit config core.notesRef refs/notes/x &&\n'> <'\tgit notes remove 3rd &&\n'> <'\tgit notes append -m "More notes on 4th commit" 4th &&\n'> <'\tverify_notes x\n'> ) } ) (command.Pipeline children: [ (command.SimpleCommand words: [{(cat)}] redirects: [ (redir.HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 750 stdin_parts: [ ('0f2efbd00262f2fd41dfae33df8765618eeacd99 ') ($ VSub_Name '$commit_sha5') ('\n') ('1f257a3a90328557c452f0817d6cc50c89d315d4 ') ($ VSub_Name '$commit_sha4') ('\n') ('d000d30e6ddcfce3a8122c403226a2ce2fd04d9d ') ($ VSub_Name '$commit_sha2') ('\n') ('43add6bd0c8c0bc871ac7991e0f5573cfba27804 ') ($ VSub_Name '$commit_sha1') ('\n') ] ) ] ) (command.SimpleCommand words: [{(sort)}] redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect_notes_x)})] ) ] negated: F ) (command.SimpleCommand words: [{(cat)}] redirects: [ (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect_log_x)}) (redir.HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 784 stdin_parts: [ ($ VSub_Name '$commit_sha5') (' 5th\n') ('Notes on 5th commit\n') ('\n') ($ VSub_Name '$commit_sha4') (' 4th\n') ('New notes on 4th commit\n') ('\n') ('More notes on 4th commit\n') ('\n') ($ VSub_Name '$commit_sha3') (' 3rd\n') ('\n') ($ VSub_Name '$commit_sha2') (' 2nd\n') ('New notes on 2nd commit\n') ('\n') ($ VSub_Name '$commit_sha1') (' 1st\n') ('Notes on 1st commit\n') ('\n') ('More notes on 1st commit\n') ('\n') ] ) ] ) (C {(test_expect_success)} {(SQ <'merge y into x => Non-conflicting 3-way merge'>)} {(SQ <'\n'> <'\tgit notes merge y &&\n'> <'\tverify_notes x &&\n'> <'\tverify_notes y\n'>)} ) (command.Pipeline children: [ (command.SimpleCommand words: [{(cat)}] redirects: [ (redir.HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 819 stdin_parts: [ ('05a4927951bcef347f51486575b878b2b60137f2 ') ($ VSub_Name '$commit_sha3') ('\n') ('d000d30e6ddcfce3a8122c403226a2ce2fd04d9d ') ($ VSub_Name '$commit_sha2') ('\n') ] ) ] ) (command.SimpleCommand words: [{(sort)}] redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect_notes_w)})] ) ] negated: F ) (command.SimpleCommand words: [{(cat)}] redirects: [ (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect_log_w)}) (redir.HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 847 stdin_parts: [ ($ VSub_Name '$commit_sha5') (' 5th\n') ('\n') ($ VSub_Name '$commit_sha4') (' 4th\n') ('\n') ($ VSub_Name '$commit_sha3') (' 3rd\n') ('New notes on 3rd commit\n') ('\n') ($ VSub_Name '$commit_sha2') (' 2nd\n') ('New notes on 2nd commit\n') ('\n') ($ VSub_Name '$commit_sha1') (' 1st\n') ('\n') ] ) ] ) (C {(test_expect_success)} {(SQ <'create notes on new, separate notes ref (w)'>)} { (SQ <'\n'> <'\tgit config core.notesRef refs/notes/w &&\n'> <'\t# Add same note as refs/notes/y on 2nd commit\n'> <'\tgit notes add -m "New notes on 2nd commit" 2nd &&\n'> <'\t# Add new note on 3rd commit (non-conflicting)\n'> <'\tgit notes add -m "New notes on 3rd commit" 3rd &&\n'> <'\t# Verify state of notes on new, separate notes ref (w)\n'> <'\tverify_notes w\n'> ) } ) (command.Pipeline children: [ (command.SimpleCommand words: [{(cat)}] redirects: [ (redir.HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 895 stdin_parts: [ ('0f2efbd00262f2fd41dfae33df8765618eeacd99 ') ($ VSub_Name '$commit_sha5') ('\n') ('1f257a3a90328557c452f0817d6cc50c89d315d4 ') ($ VSub_Name '$commit_sha4') ('\n') ('05a4927951bcef347f51486575b878b2b60137f2 ') ($ VSub_Name '$commit_sha3') ('\n') ('d000d30e6ddcfce3a8122c403226a2ce2fd04d9d ') ($ VSub_Name '$commit_sha2') ('\n') ('43add6bd0c8c0bc871ac7991e0f5573cfba27804 ') ($ VSub_Name '$commit_sha1') ('\n') ] ) ] ) (command.SimpleCommand words: [{(sort)}] redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect_notes_x)})] ) ] negated: F ) (command.SimpleCommand words: [{(cat)}] redirects: [ (redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(expect_log_x)}) (redir.HereDoc op: <Redir_DLess '<<'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 930 stdin_parts: [ ($ VSub_Name '$commit_sha5') (' 5th\n') ('Notes on 5th commit\n') ('\n') ($ VSub_Name '$commit_sha4') (' 4th\n') ('New notes on 4th commit\n') ('\n') ('More notes on 4th commit\n') ('\n') ($ VSub_Name '$commit_sha3') (' 3rd\n') ('New notes on 3rd commit\n') ('\n') ($ VSub_Name '$commit_sha2') (' 2nd\n') ('New notes on 2nd commit\n') ('\n') ($ VSub_Name '$commit_sha1') (' 1st\n') ('Notes on 1st commit\n') ('\n') ('More notes on 1st commit\n') ('\n') ] ) ] ) (C {(test_expect_success)} {(SQ <'merge w into x => Non-conflicting history-less merge'>)} { (SQ <'\n'> <'\tgit config core.notesRef refs/notes/x &&\n'> <'\tgit notes merge w &&\n'> <'\t# Verify new state of notes on other notes ref (x)\n'> <'\tverify_notes x &&\n'> <'\t# Also verify that nothing changed on other notes refs (y and w)\n'> <'\tverify_notes y &&\n'> <'\tverify_notes w\n'> ) } ) (C {(test_done)}) ] )