(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_description) op: assign_op.Equal rhs: {(SQ <'test git fast-import of notes objects'>)} spids: [13] ) ] ) (C {<.>} {<'./test-lib.sh'>}) (C {<test_tick>}) (command.Simple words: [{<cat>}] redirects: [ (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<input>}) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.MultiLine here_begin: {<INPUT_END>} here_end_span_id: 118 stdin_parts: [ <'commit refs/heads/master\n'> <'committer '> ($ Id.VSub_DollarName '$GIT_COMMITTER_NAME') <' <'> ($ Id.VSub_DollarName '$GIT_COMMITTER_EMAIL') <'> '> ($ Id.VSub_DollarName '$GIT_COMMITTER_DATE') <'\n'> <'data <<COMMIT\n'> <'first commit\n'> <'COMMIT\n'> <'\n'> <'M 644 inline foo\n'> <'data <<EOF\n'> <'file foo in first commit\n'> <'EOF\n'> <'\n'> <'M 755 inline bar\n'> <'data <<EOF\n'> <'file bar in first commit\n'> <'EOF\n'> <'\n'> <'M 644 inline baz/xyzzy\n'> <'data <<EOF\n'> <'file baz/xyzzy in first commit\n'> <'EOF\n'> <'\n'> <'commit refs/heads/master\n'> <'committer '> ($ Id.VSub_DollarName '$GIT_COMMITTER_NAME') <' <'> ($ Id.VSub_DollarName '$GIT_COMMITTER_EMAIL') <'> '> ($ Id.VSub_DollarName '$GIT_COMMITTER_DATE') <'\n'> <'data <<COMMIT\n'> <'second commit\n'> <'COMMIT\n'> <'\n'> <'M 644 inline foo\n'> <'data <<EOF\n'> <'file foo in second commit\n'> <'EOF\n'> <'\n'> <'M 755 inline baz/xyzzy\n'> <'data <<EOF\n'> <'file baz/xyzzy in second commit\n'> <'EOF\n'> <'\n'> <'commit refs/heads/master\n'> <'committer '> ($ Id.VSub_DollarName '$GIT_COMMITTER_NAME') <' <'> ($ Id.VSub_DollarName '$GIT_COMMITTER_EMAIL') <'> '> ($ Id.VSub_DollarName '$GIT_COMMITTER_DATE') <'\n'> <'data <<COMMIT\n'> <'third commit\n'> <'COMMIT\n'> <'\n'> <'M 644 inline foo\n'> <'data <<EOF\n'> <'file foo in third commit\n'> <'EOF\n'> <'\n'> <'commit refs/heads/master\n'> <'committer '> ($ Id.VSub_DollarName '$GIT_COMMITTER_NAME') <' <'> ($ Id.VSub_DollarName '$GIT_COMMITTER_EMAIL') <'> '> ($ Id.VSub_DollarName '$GIT_COMMITTER_DATE') <'\n'> <'data <<COMMIT\n'> <'fourth commit\n'> <'COMMIT\n'> <'\n'> <'M 755 inline bar\n'> <'data <<EOF\n'> <'file bar in fourth commit\n'> <'EOF\n'> <'\n'> ] ) ) ] do_fork: T ) (C {<test_expect_success>} {(SQ <'set up master branch'>)} {(SQ <'\n'> <'\n'> <'\tgit fast-import <input &&\n'> <'\tgit whatchanged master\n'>)} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:commit4) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<rev-parse>} {<'refs/heads/master'>}) ) } spids: [134] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:commit3) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<rev-parse>} {(DQ ($ Id.VSub_DollarName '$commit4') <'^'>)}) ) } spids: [143] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:commit2) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<rev-parse>} {(DQ ($ Id.VSub_DollarName '$commit4') <'~2'>)}) ) } spids: [155] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:commit1) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<rev-parse>} {(DQ ($ Id.VSub_DollarName '$commit4') <'~3'>)}) ) } spids: [167] ) ] ) (C {<test_tick>}) (command.Simple words: [{<cat>}] redirects: [ (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<input>}) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.MultiLine here_begin: {<INPUT_END>} here_end_span_id: 217 stdin_parts: [ <'commit refs/notes/test\n'> <'committer '> ($ Id.VSub_DollarName '$GIT_COMMITTER_NAME') <' <'> ($ Id.VSub_DollarName '$GIT_COMMITTER_EMAIL') <'> '> ($ Id.VSub_DollarName '$GIT_COMMITTER_DATE') <'\n'> <'data <<COMMIT\n'> <'first notes commit\n'> <'COMMIT\n'> <'\n'> <'M 644 inline '> ($ Id.VSub_DollarName '$commit1') <'\n'> <'data <<EOF\n'> <'first note for first commit\n'> <'EOF\n'> <'\n'> <'M 755 inline '> ($ Id.VSub_DollarName '$commit2') <'\n'> <'data <<EOF\n'> <'first note for second commit\n'> <'EOF\n'> <'\n'> ] ) ) ] do_fork: T ) (command.Simple words: [{<cat>}] redirects: [ (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect>}) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.MultiLine here_begin: {<EXPECT_END>} here_end_span_id: 234 stdin_parts: [ <' fourth commit\n'> <' third commit\n'> <' second commit\n'> <' first note for second commit\n'> <' first commit\n'> <' first note for first commit\n'> ] ) ) ] do_fork: T ) (C {<test_expect_success>} {(SQ <'add notes with simple M command'>)} { (SQ <'\n'> <'\n'> <'\tgit fast-import <input &&\n'> <'\tGIT_NOTES_REF=refs/notes/test git log | grep "^ " > actual &&\n'> <'\ttest_cmp expect actual\n'> <'\n'> ) } ) (C {<test_tick>}) (command.Simple words: [{<cat>}] redirects: [ (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<input>}) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.MultiLine here_begin: {<INPUT_END>} here_end_span_id: 291 stdin_parts: [ <'feature notes\n'> <'commit refs/notes/test\n'> <'committer '> ($ Id.VSub_DollarName '$GIT_COMMITTER_NAME') <' <'> ($ Id.VSub_DollarName '$GIT_COMMITTER_EMAIL') <'> '> ($ Id.VSub_DollarName '$GIT_COMMITTER_DATE') <'\n'> <'data <<COMMIT\n'> <'second notes commit\n'> <'COMMIT\n'> <'\n'> <'from refs/notes/test^0\n'> <'N inline '> ($ Id.VSub_DollarName '$commit3') <'\n'> <'data <<EOF\n'> <'first note for third commit\n'> <'EOF\n'> <'\n'> <'N inline '> ($ Id.VSub_DollarName '$commit4') <'\n'> <'data <<EOF\n'> <'first note for fourth commit\n'> <'EOF\n'> <'\n'> ] ) ) ] do_fork: T ) (command.Simple words: [{<cat>}] redirects: [ (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect>}) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.MultiLine here_begin: {<EXPECT_END>} here_end_span_id: 310 stdin_parts: [ <' fourth commit\n'> <' first note for fourth commit\n'> <' third commit\n'> <' first note for third commit\n'> <' second commit\n'> <' first note for second commit\n'> <' first commit\n'> <' first note for first commit\n'> ] ) ) ] do_fork: T ) (C {<test_expect_success>} {(SQ <'add notes with simple N command'>)} { (SQ <'\n'> <'\n'> <'\tgit fast-import <input &&\n'> <'\tGIT_NOTES_REF=refs/notes/test git log | grep "^ " > actual &&\n'> <'\ttest_cmp expect actual\n'> <'\n'> ) } ) (C {<test_tick>}) (command.Simple words: [{<cat>}] redirects: [ (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<input>}) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.MultiLine here_begin: {<INPUT_END>} here_end_span_id: 380 stdin_parts: [ <'commit refs/notes/test\n'> <'committer '> ($ Id.VSub_DollarName '$GIT_COMMITTER_NAME') <' <'> ($ Id.VSub_DollarName '$GIT_COMMITTER_EMAIL') <'> '> ($ Id.VSub_DollarName '$GIT_COMMITTER_DATE') <'\n'> <'data <<COMMIT\n'> <'third notes commit\n'> <'COMMIT\n'> <'\n'> <'from refs/notes/test^0\n'> <'N inline '> ($ Id.VSub_DollarName '$commit1') <'\n'> <'data <<EOF\n'> <'second note for first commit\n'> <'EOF\n'> <'\n'> <'N inline '> ($ Id.VSub_DollarName '$commit2') <'\n'> <'data <<EOF\n'> <'second note for second commit\n'> <'EOF\n'> <'\n'> <'N inline '> ($ Id.VSub_DollarName '$commit3') <'\n'> <'data <<EOF\n'> <'second note for third commit\n'> <'EOF\n'> <'\n'> <'N inline '> ($ Id.VSub_DollarName '$commit4') <'\n'> <'data <<EOF\n'> <'second note for fourth commit\n'> <'EOF\n'> <'\n'> ] ) ) ] do_fork: T ) (command.Simple words: [{<cat>}] redirects: [ (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect>}) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.MultiLine here_begin: {<EXPECT_END>} here_end_span_id: 399 stdin_parts: [ <' fourth commit\n'> <' second note for fourth commit\n'> <' third commit\n'> <' second note for third commit\n'> <' second commit\n'> <' second note for second commit\n'> <' first commit\n'> <' second note for first commit\n'> ] ) ) ] do_fork: T ) (C {<test_expect_success>} {(SQ <'update existing notes with N command'>)} { (SQ <'\n'> <'\n'> <'\tgit fast-import <input &&\n'> <'\tGIT_NOTES_REF=refs/notes/test git log | grep "^ " > actual &&\n'> <'\ttest_cmp expect actual\n'> <'\n'> ) } ) (C {<test_tick>}) (command.Simple words: [{<cat>}] redirects: [ (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<input>}) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.MultiLine here_begin: {<INPUT_END>} here_end_span_id: 545 stdin_parts: [ <'commit refs/notes/test\n'> <'committer '> ($ Id.VSub_DollarName '$GIT_COMMITTER_NAME') <' <'> ($ Id.VSub_DollarName '$GIT_COMMITTER_EMAIL') <'> '> ($ Id.VSub_DollarName '$GIT_COMMITTER_DATE') <'\n'> <'data <<COMMIT\n'> <'fourth notes commit\n'> <'COMMIT\n'> <'\n'> <'from refs/notes/test^0\n'> <'M 644 inline '> (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_DollarName '$commit3'))}) (C {<sed>} {(DQ <'s|^..|&/|'>)}) ] negated: F ) ) <'\n'> <'data <<EOF\n'> <'prefix of note for third commit\n'> <'EOF\n'> <'\n'> <'M 644 inline '> (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_DollarName '$commit4'))}) (C {<sed>} {(DQ <'s|^..|&/|'>)}) ] negated: F ) ) <'\n'> <'data <<EOF\n'> <'prefix of note for fourth commit\n'> <'EOF\n'> <'\n'> <'M 644 inline '> (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_DollarName '$commit4'))}) (C {<sed>} { (DQ <'s|^'> <Id.Lit_Other '\\'> <'(..'> <Id.Lit_Other '\\'> <')'> <Id.Lit_Other '\\'> <'(..'> <Id.Lit_Other '\\'> <')|'> <Id.Lit_Other '\\'> <'1/'> <Id.Lit_Other '\\'> <'2/|'> ) } ) ] negated: F ) ) <'\n'> <'data <<EOF\n'> <'pre-prefix of note for fourth commit\n'> <'EOF\n'> <'\n'> <'N inline '> ($ Id.VSub_DollarName '$commit1') <'\n'> <'data <<EOF\n'> <'third note for first commit\n'> <'EOF\n'> <'\n'> <'N inline '> ($ Id.VSub_DollarName '$commit2') <'\n'> <'data <<EOF\n'> <'third note for second commit\n'> <'EOF\n'> <'\n'> <'N inline '> ($ Id.VSub_DollarName '$commit3') <'\n'> <'data <<EOF\n'> <'third note for third commit\n'> <'EOF\n'> <'\n'> <'N inline '> ($ Id.VSub_DollarName '$commit4') <'\n'> <'data <<EOF\n'> <'third note for fourth commit\n'> <'EOF\n'> <'\n'> <'\n'> ] ) ) ] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:whitespace) op: assign_op.Equal rhs: {(DQ <' '>)} spids: [547] ) ] ) (command.Simple words: [{<cat>}] redirects: [ (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect>}) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.MultiLine here_begin: {<EXPECT_END>} here_end_span_id: 579 stdin_parts: [ <' fourth commit\n'> <' pre-prefix of note for fourth commit\n'> ($ Id.VSub_DollarName '$whitespace') <'\n'> <' prefix of note for fourth commit\n'> ($ Id.VSub_DollarName '$whitespace') <'\n'> <' third note for fourth commit\n'> <' third commit\n'> <' prefix of note for third commit\n'> ($ Id.VSub_DollarName '$whitespace') <'\n'> <' third note for third commit\n'> <' second commit\n'> <' third note for second commit\n'> <' first commit\n'> <' third note for first commit\n'> ] ) ) ] do_fork: T ) (C {<test_expect_success>} {(SQ <'add concatentation notes with M command'>)} { (SQ <'\n'> <'\n'> <'\tgit fast-import <input &&\n'> <'\tGIT_NOTES_REF=refs/notes/test git log | grep "^ " > actual &&\n'> <'\ttest_cmp expect actual\n'> <'\n'> ) } ) (C {<test_tick>}) (command.Simple words: [{<cat>}] redirects: [ (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<input>}) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.MultiLine here_begin: {<INPUT_END>} here_end_span_id: 623 stdin_parts: [ <'commit refs/notes/test\n'> <'committer '> ($ Id.VSub_DollarName '$GIT_COMMITTER_NAME') <' <'> ($ Id.VSub_DollarName '$GIT_COMMITTER_EMAIL') <'> '> ($ Id.VSub_DollarName '$GIT_COMMITTER_DATE') <'\n'> <'data <<COMMIT\n'> <'fifth notes commit\n'> <'COMMIT\n'> <'\n'> <'from refs/notes/test^0\n'> <'deleteall\n'> <'\n'> ] ) ) ] do_fork: T ) (command.Simple words: [{<cat>}] redirects: [ (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect>}) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.MultiLine here_begin: {<EXPECT_END>} here_end_span_id: 638 stdin_parts: [ <' fourth commit\n'> <' third commit\n'> <' second commit\n'> <' first commit\n'> ] ) ) ] do_fork: T ) (C {<test_expect_success>} {(SQ <'verify that deleteall also removes notes'>)} { (SQ <'\n'> <'\n'> <'\tgit fast-import <input &&\n'> <'\tGIT_NOTES_REF=refs/notes/test git log | grep "^ " > actual &&\n'> <'\ttest_cmp expect actual\n'> <'\n'> ) } ) (C {<test_tick>}) (command.Simple words: [{<cat>}] redirects: [ (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<input>}) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.MultiLine here_begin: {<INPUT_END>} here_end_span_id: 708 stdin_parts: [ <'commit refs/notes/test\n'> <'committer '> ($ Id.VSub_DollarName '$GIT_COMMITTER_NAME') <' <'> ($ Id.VSub_DollarName '$GIT_COMMITTER_EMAIL') <'> '> ($ Id.VSub_DollarName '$GIT_COMMITTER_DATE') <'\n'> <'data <<COMMIT\n'> <'sixth notes commit\n'> <'COMMIT\n'> <'\n'> <'from refs/notes/test^0\n'> <'M 644 inline '> ($ Id.VSub_DollarName '$commit1') <'\n'> <'data <<EOF\n'> <'third note for first commit\n'> <'EOF\n'> <'\n'> <'M 644 inline '> ($ Id.VSub_DollarName '$commit3') <'\n'> <'data <<EOF\n'> <'third note for third commit\n'> <'EOF\n'> <'\n'> <'N inline '> ($ Id.VSub_DollarName '$commit1') <'\n'> <'data <<EOF\n'> <'fourth note for first commit\n'> <'EOF\n'> <'\n'> <'N inline '> ($ Id.VSub_DollarName '$commit3') <'\n'> <'data <<EOF\n'> <'fourth note for third commit\n'> <'EOF\n'> <'\n'> ] ) ) ] do_fork: T ) (command.Simple words: [{<cat>}] redirects: [ (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect>}) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.MultiLine here_begin: {<EXPECT_END>} here_end_span_id: 725 stdin_parts: [ <' fourth commit\n'> <' third commit\n'> <' fourth note for third commit\n'> <' second commit\n'> <' first commit\n'> <' fourth note for first commit\n'> ] ) ) ] do_fork: T ) (C {<test_expect_success>} {(SQ <'verify that later N commands override earlier M commands'>)} { (SQ <'\n'> <'\n'> <'\tgit fast-import <input &&\n'> <'\tGIT_NOTES_REF=refs/notes/test git log | grep "^ " > actual &&\n'> <'\ttest_cmp expect actual\n'> <'\n'> ) } ) (command.ShFunction name: fast_import_commits body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:my_ref) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [754] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:my_num_commits) op: assign_op.Equal rhs: {($ Id.VSub_Number '$2')} spids: [758] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:my_append_to_file) op: assign_op.Equal rhs: {($ Id.VSub_Number '$3')} spids: [762] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:my_i) op: assign_op.Equal rhs: {<0>} spids: [766] ) ] ) (command.WhileUntil keyword: <Id.KW_While while> cond: [ (C {<test>} {($ Id.VSub_DollarName '$my_i')} {<-lt>} {($ Id.VSub_DollarName '$my_num_commits')} ) ] body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:my_i) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName '$my_i')} right: {<Id.Lit_Digits 1>} ) ) } spids: [784] ) ] ) (C {<test_tick>}) (command.Simple words: [{<cat>}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName '$my_append_to_file'))} ) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.MultiLine here_begin: {<INPUT_END>} here_end_span_id: 835 stdin_parts: [ <'commit '> ($ Id.VSub_DollarName '$my_ref') <'\n'> <'mark :'> ($ Id.VSub_DollarName '$my_i') <'\n'> <'committer '> ($ Id.VSub_DollarName '$GIT_COMMITTER_NAME') <' <'> ($ Id.VSub_DollarName '$GIT_COMMITTER_EMAIL') <'> '> ($ Id.VSub_DollarName '$GIT_COMMITTER_DATE') <'\n'> <'data <<COMMIT\n'> <'commit #'> ($ Id.VSub_DollarName '$my_i') <'\n'> <'COMMIT\n'> <'\n'> <'M 644 inline file\n'> <'data <<EOF\n'> <'file contents in commit #'> ($ Id.VSub_DollarName '$my_i') <'\n'> <'EOF\n'> <'\n'> ] ) ) ] do_fork: T ) ] ) ) ] ) ) (command.ShFunction name: fast_import_notes body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:my_notes_ref) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [856] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:my_num_commits) op: assign_op.Equal rhs: {($ Id.VSub_Number '$2')} spids: [860] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:my_append_to_file) op: assign_op.Equal rhs: {($ Id.VSub_Number '$3')} spids: [864] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:my_note_append) op: assign_op.Equal rhs: {($ Id.VSub_Number '$4')} spids: [868] ) ] ) (C {<test_tick>}) (command.Simple words: [{<cat>}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName '$my_append_to_file'))} ) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.MultiLine here_begin: {<INPUT_END>} here_end_span_id: 902 stdin_parts: [ <'commit '> ($ Id.VSub_DollarName '$my_notes_ref') <'\n'> <'committer '> ($ Id.VSub_DollarName '$GIT_COMMITTER_NAME') <' <'> ($ Id.VSub_DollarName '$GIT_COMMITTER_EMAIL') <'> '> ($ Id.VSub_DollarName '$GIT_COMMITTER_DATE') <'\n'> <'data <<COMMIT\n'> <'committing '> ($ Id.VSub_DollarName '$my_num_commits') <' notes\n'> <'COMMIT\n'> <'\n'> ] ) ) ] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:my_i) op: assign_op.Equal rhs: {<0>} spids: [905] ) ] ) (command.WhileUntil keyword: <Id.KW_While while> cond: [ (C {<test>} {($ Id.VSub_DollarName '$my_i')} {<-lt>} {($ Id.VSub_DollarName '$my_num_commits')} ) ] body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:my_i) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName '$my_i')} right: {<Id.Lit_Digits 1>} ) ) } spids: [923] ) ] ) (command.Simple words: [{<cat>}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName '$my_append_to_file'))} ) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.MultiLine here_begin: {<INPUT_END>} here_end_span_id: 955 stdin_parts: [ <'N inline :'> ($ Id.VSub_DollarName '$my_i') <'\n'> <'data <<EOF\n'> <'note for commit #'> ($ Id.VSub_DollarName '$my_i') ($ Id.VSub_DollarName '$my_note_append') <'\n'> <'EOF\n'> <'\n'> ] ) ) ] do_fork: T ) ] ) ) ] ) ) (C {<rm>} {<input>} {<expect>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:num_commits) op: assign_op.Equal rhs: {<400>} spids: [969] ) ] ) (C {<fast_import_commits>} {(DQ <'refs/heads/many_commits'>)} {($ Id.VSub_DollarName '$num_commits')} {<input>} ) (C {<fast_import_notes>} {(DQ <'refs/notes/many_notes'>)} {($ Id.VSub_DollarName '$num_commits')} {<input>} ) (C {<test_tick>}) (command.Simple words: [{<cat>}] redirects: [ (redir op:<Id.Redir_DGreat '>>'> loc:(redir_loc.Fd fd:1) arg:{<input>}) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.MultiLine here_begin: {<INPUT_END>} here_end_span_id: 1039 stdin_parts: [ <'commit refs/notes/many_notes\n'> <'committer '> ($ Id.VSub_DollarName '$GIT_COMMITTER_NAME') <' <'> ($ Id.VSub_DollarName '$GIT_COMMITTER_EMAIL') <'> '> ($ Id.VSub_DollarName '$GIT_COMMITTER_DATE') <'\n'> <'data <<COMMIT\n'> <'committing some non-notes to the notes tree\n'> <'COMMIT\n'> <'\n'> <'M 755 inline foobar/non-note.txt\n'> <'data <<EOF\n'> <'This is not a note, but rather a regular file residing in a notes tree\n'> <'EOF\n'> <'\n'> <'M 644 inline deadbeef\n'> <'data <<EOF\n'> <'Non-note file\n'> <'EOF\n'> <'\n'> <'M 644 inline de/adbeef\n'> <'data <<EOF\n'> <'Another non-note file\n'> <'EOF\n'> <'\n'> ] ) ) ] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:i) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$num_commits')} spids: [1043] ) ] ) (command.WhileUntil keyword: <Id.KW_While while> cond: [(C {<test>} {($ Id.VSub_DollarName '$i')} {<-gt>} {<0>})] body: (command.DoGroup children: [ (command.Simple words: [{<cat>}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {<expect>} ) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.MultiLine here_begin: {<EXPECT_END>} here_end_span_id: 1074 stdin_parts: [ <' commit #'> ($ Id.VSub_DollarName '$i') <'\n'> <' note for commit #'> ($ Id.VSub_DollarName '$i') <'\n'> ] ) ) ] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:i) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: {($ Id.VSub_DollarName '$i')} right: {<Id.Lit_Digits 1>} ) ) } spids: [1076] ) ] ) ] ) ) (C {<test_expect_success>} {(SQ <'add lots of commits and notes'>)} { (SQ <'\n'> <'\n'> <'\tgit fast-import <input &&\n'> <'\tGIT_NOTES_REF=refs/notes/many_notes git log refs/heads/many_commits |\n'> <'\t grep "^ " > actual &&\n'> <'\ttest_cmp expect actual\n'> <'\n'> ) } ) (C {<test_expect_success>} {(SQ <'verify that lots of notes trigger a fanout scheme'>)} { (SQ <'\n'> <'\n'> <'\t# None of the entries in the top-level notes tree should be a full SHA1\n'> <'\tgit ls-tree --name-only refs/notes/many_notes |\n'> <'\twhile read path\n'> <'\tdo\n'> <'\t\tif test $(expr length "$path") -ge 40\n'> <'\t\tthen\n'> <'\t\t\treturn 1\n'> <'\t\tfi\n'> <'\tdone\n'> <'\n'> ) } ) (command.Simple words: [{<cat>}] redirects: [ (redir op:<Id.Redir_DGreat '>>'> loc:(redir_loc.Fd fd:1) arg:{<expect_non-note1>}) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.MultiLine here_begin: {<EOF>} here_end_span_id: 1139 stdin_parts: [ <'This is not a note, but rather a regular file residing in a notes tree\n'> ] ) ) ] do_fork: T ) (command.Simple words: [{<cat>}] redirects: [ (redir op:<Id.Redir_DGreat '>>'> loc:(redir_loc.Fd fd:1) arg:{<expect_non-note2>}) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.MultiLine here_begin: {<EOF>} here_end_span_id: 1152 stdin_parts: [<'Non-note file\n'>] ) ) ] do_fork: T ) (command.Simple words: [{<cat>}] redirects: [ (redir op:<Id.Redir_DGreat '>>'> loc:(redir_loc.Fd fd:1) arg:{<expect_non-note3>}) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.MultiLine here_begin: {<EOF>} here_end_span_id: 1165 stdin_parts: [<'Another non-note file\n'>] ) ) ] do_fork: T ) (C {<test_expect_success>} {(SQ <'verify that non-notes are untouched by a fanout change'>)} { (SQ <'\n'> <'\n'> <'\tgit cat-file -p refs/notes/many_notes:foobar/non-note.txt > actual &&\n'> <'\ttest_cmp expect_non-note1 actual &&\n'> <'\tgit cat-file -p refs/notes/many_notes:deadbeef > actual &&\n'> <'\ttest_cmp expect_non-note2 actual &&\n'> <'\tgit cat-file -p refs/notes/many_notes:de/adbeef > actual &&\n'> <'\ttest_cmp expect_non-note3 actual\n'> <'\n'> ) } ) (C {<test_tick>}) (command.Simple words: [{<cat>}] redirects: [ (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<input>}) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.MultiLine here_begin: {<INPUT_END>} here_end_span_id: 1212 stdin_parts: [ <'commit refs/notes/many_notes\n'> <'committer '> ($ Id.VSub_DollarName '$GIT_COMMITTER_NAME') <' <'> ($ Id.VSub_DollarName '$GIT_COMMITTER_EMAIL') <'> '> ($ Id.VSub_DollarName '$GIT_COMMITTER_DATE') <'\n'> <'data <<COMMIT\n'> <'changing notes for the top three commits\n'> <'COMMIT\n'> <'from refs/notes/many_notes^0\n'> ] ) ) ] do_fork: T ) (C {<rm>} {<expect>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:i) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$num_commits')} spids: [1218] ) ] ) (command.ShAssignment pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:j) op:assign_op.Equal rhs:{<0>} spids:[1221])] ) (command.WhileUntil keyword: <Id.KW_While while> cond: [(C {<test>} {($ Id.VSub_DollarName '$j')} {<-lt>} {<3>})] body: (command.DoGroup children: [ (command.Simple words: [{<cat>}] redirects: [ (redir op:<Id.Redir_DGreat '>>'> loc:(redir_loc.Fd fd:1) arg:{<input>}) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.MultiLine here_begin: {<INPUT_END>} here_end_span_id: 1254 stdin_parts: [ <'N inline refs/heads/many_commits~'> ($ Id.VSub_DollarName '$j') <'\n'> <'data <<EOF\n'> <'changed note for commit #'> ($ Id.VSub_DollarName '$i') <'\n'> <'EOF\n'> ] ) ) ] do_fork: T ) (command.Simple words: [{<cat>}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {<expect>} ) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.MultiLine here_begin: {<EXPECT_END>} here_end_span_id: 1271 stdin_parts: [ <' commit #'> ($ Id.VSub_DollarName '$i') <'\n'> <' changed note for commit #'> ($ Id.VSub_DollarName '$i') <'\n'> ] ) ) ] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:i) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: {($ Id.VSub_DollarName '$i')} right: {<Id.Lit_Digits 1>} ) ) } spids: [1273] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:j) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName '$j')} right: {<Id.Lit_Digits 1>} ) ) } spids: [1284] ) ] ) ] ) ) (C {<test_expect_success>} {(SQ <'change a few existing notes'>)} { (SQ <'\n'> <'\n'> <'\tgit fast-import <input &&\n'> <'\tGIT_NOTES_REF=refs/notes/many_notes git log -n3 refs/heads/many_commits |\n'> <'\t grep "^ " > actual &&\n'> <'\ttest_cmp expect actual\n'> <'\n'> ) } ) (C {<test_expect_success>} {(SQ <'verify that changing notes respect existing fanout'>)} { (SQ <'\n'> <'\n'> <'\t# None of the entries in the top-level notes tree should be a full SHA1\n'> <'\tgit ls-tree --name-only refs/notes/many_notes |\n'> <'\twhile read path\n'> <'\tdo\n'> <'\t\tif test $(expr length "$path") -ge 40\n'> <'\t\tthen\n'> <'\t\t\treturn 1\n'> <'\t\tfi\n'> <'\tdone\n'> <'\n'> ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:remaining_notes) op: assign_op.Equal rhs: {<10>} spids: [1336] ) ] ) (C {<test_tick>}) (command.Simple words: [{<cat>}] redirects: [ (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<input>}) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.MultiLine here_begin: {<INPUT_END>} here_end_span_id: 1364 stdin_parts: [ <'commit refs/notes/many_notes\n'> <'committer '> ($ Id.VSub_DollarName '$GIT_COMMITTER_NAME') <' <'> ($ Id.VSub_DollarName '$GIT_COMMITTER_EMAIL') <'> '> ($ Id.VSub_DollarName '$GIT_COMMITTER_DATE') <'\n'> <'data <<COMMIT\n'> <'removing all notes but '> ($ Id.VSub_DollarName '$remaining_notes') <'\n'> <'COMMIT\n'> <'from refs/notes/many_notes^0\n'> ] ) ) ] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:i) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: {($ Id.VSub_DollarName '$num_commits')} right: {($ Id.VSub_DollarName '$remaining_notes')} ) ) } spids: [1366] ) ] ) (command.ForEach iter_name: sha1 iter_words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<rev-list>} {<-n>} {($ Id.VSub_DollarName '$i')} {<'refs/heads/many_commits'>}) ) } ] do_arg_iter: F body: (command.DoGroup children: [ (command.Simple words: [{<cat>}] redirects: [ (redir op:<Id.Redir_DGreat '>>'> loc:(redir_loc.Fd fd:1) arg:{<input>}) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.MultiLine here_begin: {<INPUT_END>} here_end_span_id: 1409 stdin_parts: [ <'N 0000000000000000000000000000000000000000 '> ($ Id.VSub_DollarName '$sha1') <'\n'> ] ) ) ] do_fork: T ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:i) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$num_commits')} spids: [1413] ) ] ) (C {<rm>} {<expect>}) (command.WhileUntil keyword: <Id.KW_While while> cond: [(C {<test>} {($ Id.VSub_DollarName '$i')} {<-gt>} {<0>})] body: (command.DoGroup children: [ (command.Simple words: [{<cat>}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {<expect>} ) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.MultiLine here_begin: {<EXPECT_END>} here_end_span_id: 1445 stdin_parts: [<' commit #'> ($ Id.VSub_DollarName '$i') <'\n'>] ) ) ] do_fork: T ) (command.If arms: [ (if_arm cond: [ (C {<test>} {($ Id.VSub_DollarName '$i')} {<-le>} {($ Id.VSub_DollarName '$remaining_notes')} ) ] action: [ (command.Simple words: [{<cat>}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {<expect>} ) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.MultiLine here_begin: {<EXPECT_END>} here_end_span_id: 1473 stdin_parts: [ <' note for commit #'> ($ Id.VSub_DollarName '$i') <'\n'> ] ) ) ] do_fork: T ) ] spids: [1447 1458] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:i) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: {($ Id.VSub_DollarName '$i')} right: {<Id.Lit_Digits 1>} ) ) } spids: [1478] ) ] ) ] ) ) (C {<test_expect_success>} {(SQ <'remove lots of notes'>)} { (SQ <'\n'> <'\n'> <'\tgit fast-import <input &&\n'> <'\tGIT_NOTES_REF=refs/notes/many_notes git log refs/heads/many_commits |\n'> <'\t grep "^ " > actual &&\n'> <'\ttest_cmp expect actual\n'> <'\n'> ) } ) (C {<test_expect_success>} {(SQ <'verify that removing notes trigger fanout consolidation'>)} { (SQ <'\n'> <'\n'> <'\t# All entries in the top-level notes tree should be a full SHA1\n'> <'\tgit ls-tree --name-only -r refs/notes/many_notes |\n'> <'\twhile read path\n'> <'\tdo\n'> <'\t\t# Explicitly ignore the non-note paths\n'> <'\t\ttest "$path" = "foobar/non-note.txt" && continue\n'> <'\t\ttest "$path" = "deadbeef" && continue\n'> <'\t\ttest "$path" = "de/adbeef" && continue\n'> <'\n'> <'\t\tif test $(expr length "$path") -ne 40\n'> <'\t\tthen\n'> <'\t\t\treturn 1\n'> <'\t\tfi\n'> <'\tdone\n'> <'\n'> ) } ) (C {<test_expect_success>} {(SQ <'verify that non-notes are untouched by a fanout change'>)} { (SQ <'\n'> <'\n'> <'\tgit cat-file -p refs/notes/many_notes:foobar/non-note.txt > actual &&\n'> <'\ttest_cmp expect_non-note1 actual &&\n'> <'\tgit cat-file -p refs/notes/many_notes:deadbeef > actual &&\n'> <'\ttest_cmp expect_non-note2 actual &&\n'> <'\tgit cat-file -p refs/notes/many_notes:de/adbeef > actual &&\n'> <'\ttest_cmp expect_non-note3 actual\n'> <'\n'> ) } ) (C {<rm>} {<input>} {<expect>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:num_notes_refs) op: assign_op.Equal rhs: {<10>} spids: [1561] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:num_commits) op: assign_op.Equal rhs: {<16>} spids: [1564] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:some_commits) op: assign_op.Equal rhs: {<8>} spids: [1567] ) ] ) (C {<fast_import_commits>} {(DQ <'refs/heads/more_commits'>)} {($ Id.VSub_DollarName '$num_commits')} {<input>} ) (command.ShAssignment pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:i) op:assign_op.Equal rhs:{<0>} spids:[1586])] ) (command.WhileUntil keyword: <Id.KW_While while> cond: [ (C {<test>} {($ Id.VSub_DollarName '$i')} {<-lt>} {($ Id.VSub_DollarName '$num_notes_refs')}) ] body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:i) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName '$i')} right: {<Id.Lit_Digits 1>} ) ) } spids: [1602] ) ] ) (C {<fast_import_notes>} {(DQ <'refs/notes/more_notes_'> ($ Id.VSub_DollarName '$i'))} {($ Id.VSub_DollarName '$num_commits')} {<input>} ) ] ) ) (command.ShAssignment pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:i) op:assign_op.Equal rhs:{<0>} spids:[1629])] ) (command.WhileUntil keyword: <Id.KW_While while> cond: [ (C {<test>} {($ Id.VSub_DollarName '$i')} {<-lt>} {($ Id.VSub_DollarName '$num_notes_refs')}) ] body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:i) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName '$i')} right: {<Id.Lit_Digits 1>} ) ) } spids: [1645] ) ] ) (C {<fast_import_notes>} {(DQ <'refs/notes/more_notes_'> ($ Id.VSub_DollarName '$i'))} {($ Id.VSub_DollarName '$some_commits')} {<input>} {(DQ <' (2)'>)} ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:i) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$num_commits')} spids: [1676] ) ] ) (command.WhileUntil keyword: <Id.KW_While while> cond: [(C {<test>} {($ Id.VSub_DollarName '$i')} {<-gt>} {<0>})] body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:note_data) op: assign_op.Equal rhs: {(DQ <'note for commit #'> ($ Id.VSub_DollarName '$i'))} spids: [1692] ) ] ) (command.If arms: [ (if_arm cond: [ (C {<test>} {($ Id.VSub_DollarName '$i')} {<-le>} {($ Id.VSub_DollarName '$some_commits')} ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:note_data) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$note_data') <' (2)'>)} spids: [1713] ) ] ) ] spids: [1699 1710] ) ] ) (command.Simple words: [{<cat>}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {<expect>} ) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.MultiLine here_begin: {<EXPECT_END>} here_end_span_id: 1738 stdin_parts: [ <' commit #'> ($ Id.VSub_DollarName '$i') <'\n'> <' '> ($ Id.VSub_DollarName '$note_data') <'\n'> ] ) ) ] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:i) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: {($ Id.VSub_DollarName '$i')} right: {<Id.Lit_Digits 1>} ) ) } spids: [1740] ) ] ) ] ) ) (C {<test_expect_success>} { (DQ <'add notes to '> ($ Id.VSub_DollarName '$num_commits') <' commits in each of '> ($ Id.VSub_DollarName '$num_notes_refs') <' refs'> ) } { (SQ <'\n'> <'\n'> <'\tgit fast-import --active-branches=5 <input &&\n'> <'\tGIT_NOTES_REF=refs/notes/more_notes_1 git log refs/heads/more_commits |\n'> <'\t grep "^ " > actual &&\n'> <'\ttest_cmp expect actual\n'> <'\n'> ) } ) (C {<test_done>}) ] )