(List (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('test_description', {[SQ <LIT_CHARS "test git fast-import of notes objects">]})]) (Com {[LIT_CHARS .]} {[LIT_CHARS ./test-lib.sh]} ) (Com {[LIT_CHARS test_tick]} ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS input]} <REDIR_GREAT ">"> 1), (HereDocRedirectNode here_end='INPUT_END' do_expansion=True body_word={[DQ [LIT_CHARS "commit refs/heads/master\n"][LIT_CHARS "committer "][VarSub GIT_COMMITTER_NAME][LIT_CHARS " <"][VarSub GIT_COMMITTER_EMAIL][LIT_CHARS "> "][VarSub GIT_COMMITTER_DATE][LIT_CHARS "\n"][LIT_CHARS "data <<COMMIT\n"][LIT_CHARS "first commit\n"][LIT_CHARS "COMMIT\n"][LIT_CHARS "\n"][LIT_CHARS "M 644 inline foo\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "file foo in first commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"][LIT_CHARS "M 755 inline bar\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "file bar in first commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"][LIT_CHARS "M 644 inline baz/xyzzy\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "file baz/xyzzy in first commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"][LIT_CHARS "commit refs/heads/master\n"][LIT_CHARS "committer "][VarSub GIT_COMMITTER_NAME][LIT_CHARS " <"][VarSub GIT_COMMITTER_EMAIL][LIT_CHARS "> "][VarSub GIT_COMMITTER_DATE][LIT_CHARS "\n"][LIT_CHARS "data <<COMMIT\n"][LIT_CHARS "second commit\n"][LIT_CHARS "COMMIT\n"][LIT_CHARS "\n"][LIT_CHARS "M 644 inline foo\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "file foo in second commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"][LIT_CHARS "M 755 inline baz/xyzzy\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "file baz/xyzzy in second commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"][LIT_CHARS "commit refs/heads/master\n"][LIT_CHARS "committer "][VarSub GIT_COMMITTER_NAME][LIT_CHARS " <"][VarSub GIT_COMMITTER_EMAIL][LIT_CHARS "> "][VarSub GIT_COMMITTER_DATE][LIT_CHARS "\n"][LIT_CHARS "data <<COMMIT\n"][LIT_CHARS "third commit\n"][LIT_CHARS "COMMIT\n"][LIT_CHARS "\n"][LIT_CHARS "M 644 inline foo\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "file foo in third commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"][LIT_CHARS "commit refs/heads/master\n"][LIT_CHARS "committer "][VarSub GIT_COMMITTER_NAME][LIT_CHARS " <"][VarSub GIT_COMMITTER_EMAIL][LIT_CHARS "> "][VarSub GIT_COMMITTER_DATE][LIT_CHARS "\n"][LIT_CHARS "data <<COMMIT\n"][LIT_CHARS "fourth commit\n"][LIT_CHARS "COMMIT\n"][LIT_CHARS "\n"][LIT_CHARS "M 755 inline bar\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "file bar in fourth commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"]]} <REDIR_DLESS "<<"> 0), > ) (Com {[LIT_CHARS test_expect_success]} {[SQ <LIT_CHARS "set up master branch">]} {[SQ <LIT_CHARS "\n"> <LIT_CHARS "\n"> <LIT_CHARS "\tgit fast-import <input &&\n"> <LIT_CHARS "\tgit whatchanged master\n">]} ) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('commit4', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS refs/heads/master]})]})]) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('commit3', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[DQ [VarSub commit4][LIT_CHARS "^"]]})]})]) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('commit2', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[DQ [VarSub commit4][LIT_CHARS "~2"]]})]})]) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('commit1', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[DQ [VarSub commit4][LIT_CHARS "~3"]]})]})]) (Com {[LIT_CHARS test_tick]} ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS input]} <REDIR_GREAT ">"> 1), (HereDocRedirectNode here_end='INPUT_END' do_expansion=True body_word={[DQ [LIT_CHARS "commit refs/notes/test\n"][LIT_CHARS "committer "][VarSub GIT_COMMITTER_NAME][LIT_CHARS " <"][VarSub GIT_COMMITTER_EMAIL][LIT_CHARS "> "][VarSub GIT_COMMITTER_DATE][LIT_CHARS "\n"][LIT_CHARS "data <<COMMIT\n"][LIT_CHARS "first notes commit\n"][LIT_CHARS "COMMIT\n"][LIT_CHARS "\n"][LIT_CHARS "M 644 inline "][VarSub commit1][LIT_CHARS "\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "first note for first commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"][LIT_CHARS "M 755 inline "][VarSub commit2][LIT_CHARS "\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "first note for second commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"]]} <REDIR_DLESS "<<"> 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS expect]} <REDIR_GREAT ">"> 1), (HereDocRedirectNode here_end='EXPECT_END' do_expansion=True body_word={[DQ [LIT_CHARS " fourth commit\n"][LIT_CHARS " third commit\n"][LIT_CHARS " second commit\n"][LIT_CHARS " first note for second commit\n"][LIT_CHARS " first commit\n"][LIT_CHARS " first note for first commit\n"]]} <REDIR_DLESS "<<"> 0), > ) (Com {[LIT_CHARS test_expect_success]} {[SQ <LIT_CHARS "add notes with simple M command">]} {[SQ <LIT_CHARS "\n"> <LIT_CHARS "\n"> <LIT_CHARS "\tgit fast-import <input &&\n"> <LIT_CHARS "\tGIT_NOTES_REF=refs/notes/test git log | grep \"^ \" > actual &&\n"> <LIT_CHARS "\ttest_cmp expect actual\n"> <LIT_CHARS "\n">]} ) (Com {[LIT_CHARS test_tick]} ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS input]} <REDIR_GREAT ">"> 1), (HereDocRedirectNode here_end='INPUT_END' do_expansion=True body_word={[DQ [LIT_CHARS "feature notes\n"][LIT_CHARS "commit refs/notes/test\n"][LIT_CHARS "committer "][VarSub GIT_COMMITTER_NAME][LIT_CHARS " <"][VarSub GIT_COMMITTER_EMAIL][LIT_CHARS "> "][VarSub GIT_COMMITTER_DATE][LIT_CHARS "\n"][LIT_CHARS "data <<COMMIT\n"][LIT_CHARS "second notes commit\n"][LIT_CHARS "COMMIT\n"][LIT_CHARS "\n"][LIT_CHARS "from refs/notes/test^0\n"][LIT_CHARS "N inline "][VarSub commit3][LIT_CHARS "\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "first note for third commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"][LIT_CHARS "N inline "][VarSub commit4][LIT_CHARS "\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "first note for fourth commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"]]} <REDIR_DLESS "<<"> 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS expect]} <REDIR_GREAT ">"> 1), (HereDocRedirectNode here_end='EXPECT_END' do_expansion=True body_word={[DQ [LIT_CHARS " fourth commit\n"][LIT_CHARS " first note for fourth commit\n"][LIT_CHARS " third commit\n"][LIT_CHARS " first note for third commit\n"][LIT_CHARS " second commit\n"][LIT_CHARS " first note for second commit\n"][LIT_CHARS " first commit\n"][LIT_CHARS " first note for first commit\n"]]} <REDIR_DLESS "<<"> 0), > ) (Com {[LIT_CHARS test_expect_success]} {[SQ <LIT_CHARS "add notes with simple N command">]} {[SQ <LIT_CHARS "\n"> <LIT_CHARS "\n"> <LIT_CHARS "\tgit fast-import <input &&\n"> <LIT_CHARS "\tGIT_NOTES_REF=refs/notes/test git log | grep \"^ \" > actual &&\n"> <LIT_CHARS "\ttest_cmp expect actual\n"> <LIT_CHARS "\n">]} ) (Com {[LIT_CHARS test_tick]} ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS input]} <REDIR_GREAT ">"> 1), (HereDocRedirectNode here_end='INPUT_END' do_expansion=True body_word={[DQ [LIT_CHARS "commit refs/notes/test\n"][LIT_CHARS "committer "][VarSub GIT_COMMITTER_NAME][LIT_CHARS " <"][VarSub GIT_COMMITTER_EMAIL][LIT_CHARS "> "][VarSub GIT_COMMITTER_DATE][LIT_CHARS "\n"][LIT_CHARS "data <<COMMIT\n"][LIT_CHARS "third notes commit\n"][LIT_CHARS "COMMIT\n"][LIT_CHARS "\n"][LIT_CHARS "from refs/notes/test^0\n"][LIT_CHARS "N inline "][VarSub commit1][LIT_CHARS "\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "second note for first commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"][LIT_CHARS "N inline "][VarSub commit2][LIT_CHARS "\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "second note for second commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"][LIT_CHARS "N inline "][VarSub commit3][LIT_CHARS "\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "second note for third commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"][LIT_CHARS "N inline "][VarSub commit4][LIT_CHARS "\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "second note for fourth commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"]]} <REDIR_DLESS "<<"> 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS expect]} <REDIR_GREAT ">"> 1), (HereDocRedirectNode here_end='EXPECT_END' do_expansion=True body_word={[DQ [LIT_CHARS " fourth commit\n"][LIT_CHARS " second note for fourth commit\n"][LIT_CHARS " third commit\n"][LIT_CHARS " second note for third commit\n"][LIT_CHARS " second commit\n"][LIT_CHARS " second note for second commit\n"][LIT_CHARS " first commit\n"][LIT_CHARS " second note for first commit\n"]]} <REDIR_DLESS "<<"> 0), > ) (Com {[LIT_CHARS test_expect_success]} {[SQ <LIT_CHARS "update existing notes with N command">]} {[SQ <LIT_CHARS "\n"> <LIT_CHARS "\n"> <LIT_CHARS "\tgit fast-import <input &&\n"> <LIT_CHARS "\tGIT_NOTES_REF=refs/notes/test git log | grep \"^ \" > actual &&\n"> <LIT_CHARS "\ttest_cmp expect actual\n"> <LIT_CHARS "\n">]} ) (Com {[LIT_CHARS test_tick]} ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS input]} <REDIR_GREAT ">"> 1), (HereDocRedirectNode here_end='INPUT_END' do_expansion=True body_word={[DQ [LIT_CHARS "commit refs/notes/test\n"][LIT_CHARS "committer "][VarSub GIT_COMMITTER_NAME][LIT_CHARS " <"][VarSub GIT_COMMITTER_EMAIL][LIT_CHARS "> "][VarSub GIT_COMMITTER_DATE][LIT_CHARS "\n"][LIT_CHARS "data <<COMMIT\n"][LIT_CHARS "fourth notes commit\n"][LIT_CHARS "COMMIT\n"][LIT_CHARS "\n"][LIT_CHARS "from refs/notes/test^0\n"][LIT_CHARS "M 644 inline "][ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub commit3]]}) (Com {[LIT_CHARS sed]} {[DQ [LIT_CHARS "s|^..|&/|"]]}) )][LIT_CHARS "\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "prefix of note for third commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"][LIT_CHARS "M 644 inline "][ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub commit4]]}) (Com {[LIT_CHARS sed]} {[DQ [LIT_CHARS "s|^..|&/|"]]}) )][LIT_CHARS "\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "prefix of note for fourth commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"][LIT_CHARS "M 644 inline "][ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub commit4]]}) (Com {[LIT_CHARS sed]} {[DQ [LIT_CHARS "s|^"][\ LIT_ESCAPED_CHAR "\\("][LIT_CHARS ..][\ LIT_ESCAPED_CHAR "\\)"][\ LIT_ESCAPED_CHAR "\\("][LIT_CHARS ..][\ LIT_ESCAPED_CHAR "\\)"][LIT_CHARS "|"][\ LIT_ESCAPED_CHAR "\\1"][LIT_CHARS /][\ LIT_ESCAPED_CHAR "\\2"][LIT_CHARS "/|"]]}) )][LIT_CHARS "\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "pre-prefix of note for fourth commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"][LIT_CHARS "N inline "][VarSub commit1][LIT_CHARS "\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "third note for first commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"][LIT_CHARS "N inline "][VarSub commit2][LIT_CHARS "\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "third note for second commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"][LIT_CHARS "N inline "][VarSub commit3][LIT_CHARS "\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "third note for third commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"][LIT_CHARS "N inline "][VarSub commit4][LIT_CHARS "\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "third note for fourth commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"][LIT_CHARS "\n"]]} <REDIR_DLESS "<<"> 0), > ) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('whitespace', {[DQ [LIT_CHARS " "]]})]) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS expect]} <REDIR_GREAT ">"> 1), (HereDocRedirectNode here_end='EXPECT_END' do_expansion=True body_word={[DQ [LIT_CHARS " fourth commit\n"][LIT_CHARS " pre-prefix of note for fourth commit\n"][VarSub whitespace][LIT_CHARS "\n"][LIT_CHARS " prefix of note for fourth commit\n"][VarSub whitespace][LIT_CHARS "\n"][LIT_CHARS " third note for fourth commit\n"][LIT_CHARS " third commit\n"][LIT_CHARS " prefix of note for third commit\n"][VarSub whitespace][LIT_CHARS "\n"][LIT_CHARS " third note for third commit\n"][LIT_CHARS " second commit\n"][LIT_CHARS " third note for second commit\n"][LIT_CHARS " first commit\n"][LIT_CHARS " third note for first commit\n"]]} <REDIR_DLESS "<<"> 0), > ) (Com {[LIT_CHARS test_expect_success]} {[SQ <LIT_CHARS "add concatentation notes with M command">]} {[SQ <LIT_CHARS "\n"> <LIT_CHARS "\n"> <LIT_CHARS "\tgit fast-import <input &&\n"> <LIT_CHARS "\tGIT_NOTES_REF=refs/notes/test git log | grep \"^ \" > actual &&\n"> <LIT_CHARS "\ttest_cmp expect actual\n"> <LIT_CHARS "\n">]} ) (Com {[LIT_CHARS test_tick]} ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS input]} <REDIR_GREAT ">"> 1), (HereDocRedirectNode here_end='INPUT_END' do_expansion=True body_word={[DQ [LIT_CHARS "commit refs/notes/test\n"][LIT_CHARS "committer "][VarSub GIT_COMMITTER_NAME][LIT_CHARS " <"][VarSub GIT_COMMITTER_EMAIL][LIT_CHARS "> "][VarSub GIT_COMMITTER_DATE][LIT_CHARS "\n"][LIT_CHARS "data <<COMMIT\n"][LIT_CHARS "fifth notes commit\n"][LIT_CHARS "COMMIT\n"][LIT_CHARS "\n"][LIT_CHARS "from refs/notes/test^0\n"][LIT_CHARS "deleteall\n"][LIT_CHARS "\n"]]} <REDIR_DLESS "<<"> 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS expect]} <REDIR_GREAT ">"> 1), (HereDocRedirectNode here_end='EXPECT_END' do_expansion=True body_word={[DQ [LIT_CHARS " fourth commit\n"][LIT_CHARS " third commit\n"][LIT_CHARS " second commit\n"][LIT_CHARS " first commit\n"]]} <REDIR_DLESS "<<"> 0), > ) (Com {[LIT_CHARS test_expect_success]} {[SQ <LIT_CHARS "verify that deleteall also removes notes">]} {[SQ <LIT_CHARS "\n"> <LIT_CHARS "\n"> <LIT_CHARS "\tgit fast-import <input &&\n"> <LIT_CHARS "\tGIT_NOTES_REF=refs/notes/test git log | grep \"^ \" > actual &&\n"> <LIT_CHARS "\ttest_cmp expect actual\n"> <LIT_CHARS "\n">]} ) (Com {[LIT_CHARS test_tick]} ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS input]} <REDIR_GREAT ">"> 1), (HereDocRedirectNode here_end='INPUT_END' do_expansion=True body_word={[DQ [LIT_CHARS "commit refs/notes/test\n"][LIT_CHARS "committer "][VarSub GIT_COMMITTER_NAME][LIT_CHARS " <"][VarSub GIT_COMMITTER_EMAIL][LIT_CHARS "> "][VarSub GIT_COMMITTER_DATE][LIT_CHARS "\n"][LIT_CHARS "data <<COMMIT\n"][LIT_CHARS "sixth notes commit\n"][LIT_CHARS "COMMIT\n"][LIT_CHARS "\n"][LIT_CHARS "from refs/notes/test^0\n"][LIT_CHARS "M 644 inline "][VarSub commit1][LIT_CHARS "\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "third note for first commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"][LIT_CHARS "M 644 inline "][VarSub commit3][LIT_CHARS "\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "third note for third commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"][LIT_CHARS "N inline "][VarSub commit1][LIT_CHARS "\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "fourth note for first commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"][LIT_CHARS "N inline "][VarSub commit3][LIT_CHARS "\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "fourth note for third commit\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"]]} <REDIR_DLESS "<<"> 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS expect]} <REDIR_GREAT ">"> 1), (HereDocRedirectNode here_end='EXPECT_END' do_expansion=True body_word={[DQ [LIT_CHARS " fourth commit\n"][LIT_CHARS " third commit\n"][LIT_CHARS " fourth note for third commit\n"][LIT_CHARS " second commit\n"][LIT_CHARS " first commit\n"][LIT_CHARS " fourth note for first commit\n"]]} <REDIR_DLESS "<<"> 0), > ) (Com {[LIT_CHARS test_expect_success]} {[SQ <LIT_CHARS "verify that later N commands override earlier M commands">]} {[SQ <LIT_CHARS "\n"> <LIT_CHARS "\n"> <LIT_CHARS "\tgit fast-import <input &&\n"> <LIT_CHARS "\tGIT_NOTES_REF=refs/notes/test git log | grep \"^ \" > actual &&\n"> <LIT_CHARS "\ttest_cmp expect actual\n"> <LIT_CHARS "\n">]} ) (FunctionDef fast_import_commits [] (List (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('my_ref', {[VarSub 1]})]) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('my_num_commits', {[VarSub 2]})]) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('my_append_to_file', {[VarSub 3]})]) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('my_i', {[LIT_CHARS 0]})]) (While (Com {[LIT_CHARS test]} {[VarSub my_i]} {[LIT_CHARS -lt]} {[VarSub my_num_commits]} ) (List (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('my_i', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub my_i]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})]) (Com {[LIT_CHARS test_tick]} ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[DQ [VarSub my_append_to_file]]} <REDIR_DGREAT ">>"> 1), (HereDocRedirectNode here_end='INPUT_END' do_expansion=True body_word={[DQ [LIT_CHARS "commit "][VarSub my_ref][LIT_CHARS "\n"][LIT_CHARS "mark :"][VarSub my_i][LIT_CHARS "\n"][LIT_CHARS "committer "][VarSub GIT_COMMITTER_NAME][LIT_CHARS " <"][VarSub GIT_COMMITTER_EMAIL][LIT_CHARS "> "][VarSub GIT_COMMITTER_DATE][LIT_CHARS "\n"][LIT_CHARS "data <<COMMIT\n"][LIT_CHARS "commit #"][VarSub my_i][LIT_CHARS "\n"][LIT_CHARS "COMMIT\n"][LIT_CHARS "\n"][LIT_CHARS "M 644 inline file\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "file contents in commit #"][VarSub my_i][LIT_CHARS "\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"]]} <REDIR_DLESS "<<"> 0), > ) ) ) ) ) (FunctionDef fast_import_notes [] (List (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('my_notes_ref', {[VarSub 1]})]) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('my_num_commits', {[VarSub 2]})]) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('my_append_to_file', {[VarSub 3]})]) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('my_note_append', {[VarSub 4]})]) (Com {[LIT_CHARS test_tick]} ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[DQ [VarSub my_append_to_file]]} <REDIR_DGREAT ">>"> 1), (HereDocRedirectNode here_end='INPUT_END' do_expansion=True body_word={[DQ [LIT_CHARS "commit "][VarSub my_notes_ref][LIT_CHARS "\n"][LIT_CHARS "committer "][VarSub GIT_COMMITTER_NAME][LIT_CHARS " <"][VarSub GIT_COMMITTER_EMAIL][LIT_CHARS "> "][VarSub GIT_COMMITTER_DATE][LIT_CHARS "\n"][LIT_CHARS "data <<COMMIT\n"][LIT_CHARS "committing "][VarSub my_num_commits][LIT_CHARS " notes\n"][LIT_CHARS "COMMIT\n"][LIT_CHARS "\n"]]} <REDIR_DLESS "<<"> 0), > ) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('my_i', {[LIT_CHARS 0]})]) (While (Com {[LIT_CHARS test]} {[VarSub my_i]} {[LIT_CHARS -lt]} {[VarSub my_num_commits]} ) (List (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('my_i', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub my_i]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})]) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[DQ [VarSub my_append_to_file]]} <REDIR_DGREAT ">>"> 1), (HereDocRedirectNode here_end='INPUT_END' do_expansion=True body_word={[DQ [LIT_CHARS "N inline :"][VarSub my_i][LIT_CHARS "\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "note for commit #"][VarSub my_i][VarSub my_note_append][LIT_CHARS "\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"]]} <REDIR_DLESS "<<"> 0), > ) ) ) ) ) (Com {[LIT_CHARS rm]} {[LIT_CHARS input]} {[LIT_CHARS expect]} ) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('num_commits', {[LIT_CHARS 400]})]) (Com {[LIT_CHARS fast_import_commits]} {[DQ [LIT_CHARS refs/heads/many_commits]]} {[VarSub num_commits]} {[LIT_CHARS input]} ) (Com {[LIT_CHARS fast_import_notes]} {[DQ [LIT_CHARS refs/notes/many_notes]]} {[VarSub num_commits]} {[LIT_CHARS input]} ) (Com {[LIT_CHARS test_tick]} ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS input]} <REDIR_DGREAT ">>"> 1), (HereDocRedirectNode here_end='INPUT_END' do_expansion=True body_word={[DQ [LIT_CHARS "commit refs/notes/many_notes\n"][LIT_CHARS "committer "][VarSub GIT_COMMITTER_NAME][LIT_CHARS " <"][VarSub GIT_COMMITTER_EMAIL][LIT_CHARS "> "][VarSub GIT_COMMITTER_DATE][LIT_CHARS "\n"][LIT_CHARS "data <<COMMIT\n"][LIT_CHARS "committing some non-notes to the notes tree\n"][LIT_CHARS "COMMIT\n"][LIT_CHARS "\n"][LIT_CHARS "M 755 inline foobar/non-note.txt\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "This is not a note, but rather a regular file residing in a notes tree\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"][LIT_CHARS "M 644 inline deadbeef\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "Non-note file\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"][LIT_CHARS "M 644 inline de/adbeef\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "Another non-note file\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\n"]]} <REDIR_DLESS "<<"> 0), > ) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('i', {[VarSub num_commits]})]) (While (Com {[LIT_CHARS test]} {[VarSub i]} {[LIT_CHARS -gt]} {[LIT_CHARS 0]} ) (List (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS expect]} <REDIR_DGREAT ">>"> 1), (HereDocRedirectNode here_end='EXPECT_END' do_expansion=True body_word={[DQ [LIT_CHARS " commit #"][VarSub i][LIT_CHARS "\n"][LIT_CHARS " note for commit #"][VarSub i][LIT_CHARS "\n"]]} <REDIR_DLESS "<<"> 0), > ) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('i', {[ArithSub {A2 AS_OP_MINUS {A Atom NODE_ARITH_WORD {[VarSub i]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})]) ) ) (Com {[LIT_CHARS test_expect_success]} {[SQ <LIT_CHARS "add lots of commits and notes">]} {[SQ <LIT_CHARS "\n"> <LIT_CHARS "\n"> <LIT_CHARS "\tgit fast-import <input &&\n"> <LIT_CHARS "\tGIT_NOTES_REF=refs/notes/many_notes git log refs/heads/many_commits |\n"> <LIT_CHARS "\t grep \"^ \" > actual &&\n"> <LIT_CHARS "\ttest_cmp expect actual\n"> <LIT_CHARS "\n">]} ) (Com {[LIT_CHARS test_expect_success]} {[SQ <LIT_CHARS "verify that lots of notes trigger a fanout scheme">]} {[SQ <LIT_CHARS "\n"> <LIT_CHARS "\n"> <LIT_CHARS "\t# None of the entries in the top-level notes tree should be a full SHA1\n"> <LIT_CHARS "\tgit ls-tree --name-only refs/notes/many_notes |\n"> <LIT_CHARS "\twhile read path\n"> <LIT_CHARS "\tdo\n"> <LIT_CHARS "\t\tif test $(expr length \"$path\") -ge 40\n"> <LIT_CHARS "\t\tthen\n"> <LIT_CHARS "\t\t\treturn 1\n"> <LIT_CHARS "\t\tfi\n"> <LIT_CHARS "\tdone\n"> <LIT_CHARS "\n">]} ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS expect_non-note1]} <REDIR_DGREAT ">>"> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "This is not a note, but rather a regular file residing in a notes tree\n"]]} <REDIR_DLESS "<<"> 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS expect_non-note2]} <REDIR_DGREAT ">>"> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "Non-note file\n"]]} <REDIR_DLESS "<<"> 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS expect_non-note3]} <REDIR_DGREAT ">>"> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "Another non-note file\n"]]} <REDIR_DLESS "<<"> 0), > ) (Com {[LIT_CHARS test_expect_success]} {[SQ <LIT_CHARS "verify that non-notes are untouched by a fanout change">]} {[SQ <LIT_CHARS "\n"> <LIT_CHARS "\n"> <LIT_CHARS "\tgit cat-file -p refs/notes/many_notes:foobar/non-note.txt > actual &&\n"> <LIT_CHARS "\ttest_cmp expect_non-note1 actual &&\n"> <LIT_CHARS "\tgit cat-file -p refs/notes/many_notes:deadbeef > actual &&\n"> <LIT_CHARS "\ttest_cmp expect_non-note2 actual &&\n"> <LIT_CHARS "\tgit cat-file -p refs/notes/many_notes:de/adbeef > actual &&\n"> <LIT_CHARS "\ttest_cmp expect_non-note3 actual\n"> <LIT_CHARS "\n">]} ) (Com {[LIT_CHARS test_tick]} ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS input]} <REDIR_GREAT ">"> 1), (HereDocRedirectNode here_end='INPUT_END' do_expansion=True body_word={[DQ [LIT_CHARS "commit refs/notes/many_notes\n"][LIT_CHARS "committer "][VarSub GIT_COMMITTER_NAME][LIT_CHARS " <"][VarSub GIT_COMMITTER_EMAIL][LIT_CHARS "> "][VarSub GIT_COMMITTER_DATE][LIT_CHARS "\n"][LIT_CHARS "data <<COMMIT\n"][LIT_CHARS "changing notes for the top three commits\n"][LIT_CHARS "COMMIT\n"][LIT_CHARS "from refs/notes/many_notes^0\n"]]} <REDIR_DLESS "<<"> 0), > ) (Com {[LIT_CHARS rm]} {[LIT_CHARS expect]} ) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('i', {[VarSub num_commits]})]) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('j', {[LIT_CHARS 0]})]) (While (Com {[LIT_CHARS test]} {[VarSub j]} {[LIT_CHARS -lt]} {[LIT_CHARS 3]} ) (List (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS input]} <REDIR_DGREAT ">>"> 1), (HereDocRedirectNode here_end='INPUT_END' do_expansion=True body_word={[DQ [LIT_CHARS "N inline refs/heads/many_commits~"][VarSub j][LIT_CHARS "\n"][LIT_CHARS "data <<EOF\n"][LIT_CHARS "changed note for commit #"][VarSub i][LIT_CHARS "\n"][LIT_CHARS "EOF\n"]]} <REDIR_DLESS "<<"> 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS expect]} <REDIR_DGREAT ">>"> 1), (HereDocRedirectNode here_end='EXPECT_END' do_expansion=True body_word={[DQ [LIT_CHARS " commit #"][VarSub i][LIT_CHARS "\n"][LIT_CHARS " changed note for commit #"][VarSub i][LIT_CHARS "\n"]]} <REDIR_DLESS "<<"> 0), > ) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('i', {[ArithSub {A2 AS_OP_MINUS {A Atom NODE_ARITH_WORD {[VarSub i]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})]) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('j', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub j]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})]) ) ) (Com {[LIT_CHARS test_expect_success]} {[SQ <LIT_CHARS "change a few existing notes">]} {[SQ <LIT_CHARS "\n"> <LIT_CHARS "\n"> <LIT_CHARS "\tgit fast-import <input &&\n"> <LIT_CHARS "\tGIT_NOTES_REF=refs/notes/many_notes git log -n3 refs/heads/many_commits |\n"> <LIT_CHARS "\t grep \"^ \" > actual &&\n"> <LIT_CHARS "\ttest_cmp expect actual\n"> <LIT_CHARS "\n">]} ) (Com {[LIT_CHARS test_expect_success]} {[SQ <LIT_CHARS "verify that changing notes respect existing fanout">]} {[SQ <LIT_CHARS "\n"> <LIT_CHARS "\n"> <LIT_CHARS "\t# None of the entries in the top-level notes tree should be a full SHA1\n"> <LIT_CHARS "\tgit ls-tree --name-only refs/notes/many_notes |\n"> <LIT_CHARS "\twhile read path\n"> <LIT_CHARS "\tdo\n"> <LIT_CHARS "\t\tif test $(expr length \"$path\") -ge 40\n"> <LIT_CHARS "\t\tthen\n"> <LIT_CHARS "\t\t\treturn 1\n"> <LIT_CHARS "\t\tfi\n"> <LIT_CHARS "\tdone\n"> <LIT_CHARS "\n">]} ) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('remaining_notes', {[LIT_CHARS 10]})]) (Com {[LIT_CHARS test_tick]} ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS input]} <REDIR_GREAT ">"> 1), (HereDocRedirectNode here_end='INPUT_END' do_expansion=True body_word={[DQ [LIT_CHARS "commit refs/notes/many_notes\n"][LIT_CHARS "committer "][VarSub GIT_COMMITTER_NAME][LIT_CHARS " <"][VarSub GIT_COMMITTER_EMAIL][LIT_CHARS "> "][VarSub GIT_COMMITTER_DATE][LIT_CHARS "\n"][LIT_CHARS "data <<COMMIT\n"][LIT_CHARS "removing all notes but "][VarSub remaining_notes][LIT_CHARS "\n"][LIT_CHARS "COMMIT\n"][LIT_CHARS "from refs/notes/many_notes^0\n"]]} <REDIR_DLESS "<<"> 0), > ) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('i', {[ArithSub {A2 AS_OP_MINUS {A Atom NODE_ARITH_WORD {[VarSub num_commits]}} {A Atom NODE_ARITH_WORD {[VarSub remaining_notes]}}}]})]) (For sha1 [{[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-list]} {[LIT_CHARS -n]} {[VarSub i]} {[LIT_CHARS refs/heads/many_commits]})]}]) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS input]} <REDIR_DGREAT ">>"> 1), (HereDocRedirectNode here_end='INPUT_END' do_expansion=True body_word={[DQ [LIT_CHARS "N 0000000000000000000000000000000000000000 "][VarSub sha1][LIT_CHARS "\n"]]} <REDIR_DLESS "<<"> 0), > ) ) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('i', {[VarSub num_commits]})]) (Com {[LIT_CHARS rm]} {[LIT_CHARS expect]} ) (While (Com {[LIT_CHARS test]} {[VarSub i]} {[LIT_CHARS -gt]} {[LIT_CHARS 0]} ) (List (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS expect]} <REDIR_DGREAT ">>"> 1), (HereDocRedirectNode here_end='EXPECT_END' do_expansion=True body_word={[DQ [LIT_CHARS " commit #"][VarSub i][LIT_CHARS "\n"]]} <REDIR_DLESS "<<"> 0), > ) (If (Com {[LIT_CHARS test]} {[VarSub i]} {[LIT_CHARS -le]} {[VarSub remaining_notes]} ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS expect]} <REDIR_DGREAT ">>"> 1), (HereDocRedirectNode here_end='EXPECT_END' do_expansion=True body_word={[DQ [LIT_CHARS " note for commit #"][VarSub i][LIT_CHARS "\n"]]} <REDIR_DLESS "<<"> 0), > ) ) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('i', {[ArithSub {A2 AS_OP_MINUS {A Atom NODE_ARITH_WORD {[VarSub i]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})]) ) ) (Com {[LIT_CHARS test_expect_success]} {[SQ <LIT_CHARS "remove lots of notes">]} {[SQ <LIT_CHARS "\n"> <LIT_CHARS "\n"> <LIT_CHARS "\tgit fast-import <input &&\n"> <LIT_CHARS "\tGIT_NOTES_REF=refs/notes/many_notes git log refs/heads/many_commits |\n"> <LIT_CHARS "\t grep \"^ \" > actual &&\n"> <LIT_CHARS "\ttest_cmp expect actual\n"> <LIT_CHARS "\n">]} ) (Com {[LIT_CHARS test_expect_success]} {[SQ <LIT_CHARS "verify that removing notes trigger fanout consolidation">]} {[SQ <LIT_CHARS "\n"> <LIT_CHARS "\n"> <LIT_CHARS "\t# All entries in the top-level notes tree should be a full SHA1\n"> <LIT_CHARS "\tgit ls-tree --name-only -r refs/notes/many_notes |\n"> <LIT_CHARS "\twhile read path\n"> <LIT_CHARS "\tdo\n"> <LIT_CHARS "\t\t# Explicitly ignore the non-note paths\n"> <LIT_CHARS "\t\ttest \"$path\" = \"foobar/non-note.txt\" && continue\n"> <LIT_CHARS "\t\ttest \"$path\" = \"deadbeef\" && continue\n"> <LIT_CHARS "\t\ttest \"$path\" = \"de/adbeef\" && continue\n"> <LIT_CHARS "\n"> <LIT_CHARS "\t\tif test $(expr length \"$path\") -ne 40\n"> <LIT_CHARS "\t\tthen\n"> <LIT_CHARS "\t\t\treturn 1\n"> <LIT_CHARS "\t\tfi\n"> <LIT_CHARS "\tdone\n"> <LIT_CHARS "\n">]} ) (Com {[LIT_CHARS test_expect_success]} {[SQ <LIT_CHARS "verify that non-notes are untouched by a fanout change">]} {[SQ <LIT_CHARS "\n"> <LIT_CHARS "\n"> <LIT_CHARS "\tgit cat-file -p refs/notes/many_notes:foobar/non-note.txt > actual &&\n"> <LIT_CHARS "\ttest_cmp expect_non-note1 actual &&\n"> <LIT_CHARS "\tgit cat-file -p refs/notes/many_notes:deadbeef > actual &&\n"> <LIT_CHARS "\ttest_cmp expect_non-note2 actual &&\n"> <LIT_CHARS "\tgit cat-file -p refs/notes/many_notes:de/adbeef > actual &&\n"> <LIT_CHARS "\ttest_cmp expect_non-note3 actual\n"> <LIT_CHARS "\n">]} ) (Com {[LIT_CHARS rm]} {[LIT_CHARS input]} {[LIT_CHARS expect]} ) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('num_notes_refs', {[LIT_CHARS 10]})]) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('num_commits', {[LIT_CHARS 16]})]) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('some_commits', {[LIT_CHARS 8]})]) (Com {[LIT_CHARS fast_import_commits]} {[DQ [LIT_CHARS refs/heads/more_commits]]} {[VarSub num_commits]} {[LIT_CHARS input]} ) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('i', {[LIT_CHARS 0]})]) (While (Com {[LIT_CHARS test]} {[VarSub i]} {[LIT_CHARS -lt]} {[VarSub num_notes_refs]} ) (List (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('i', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub i]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})]) (Com {[LIT_CHARS fast_import_notes]} {[DQ [LIT_CHARS refs/notes/more_notes_][VarSub i]]} {[VarSub num_commits]} {[LIT_CHARS input]} ) ) ) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('i', {[LIT_CHARS 0]})]) (While (Com {[LIT_CHARS test]} {[VarSub i]} {[LIT_CHARS -lt]} {[VarSub num_notes_refs]} ) (List (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('i', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub i]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})]) (Com {[LIT_CHARS fast_import_notes]} {[DQ [LIT_CHARS refs/notes/more_notes_][VarSub i]]} {[VarSub some_commits]} {[LIT_CHARS input]} {[DQ [LIT_CHARS " (2)"]]} ) ) ) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('i', {[VarSub num_commits]})]) (While (Com {[LIT_CHARS test]} {[VarSub i]} {[LIT_CHARS -gt]} {[LIT_CHARS 0]} ) (List (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('note_data', {[DQ [LIT_CHARS "note for commit #"][VarSub i]]})]) (If (Com {[LIT_CHARS test]} {[VarSub i]} {[LIT_CHARS -le]} {[VarSub some_commits]} ) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('note_data', {[DQ [VarSub note_data][LIT_CHARS " (2)"]]})]) ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS expect]} <REDIR_DGREAT ">>"> 1), (HereDocRedirectNode here_end='EXPECT_END' do_expansion=True body_word={[DQ [LIT_CHARS " commit #"][VarSub i][LIT_CHARS "\n"][LIT_CHARS " "][VarSub note_data][LIT_CHARS "\n"]]} <REDIR_DLESS "<<"> 0), > ) (= scope=<EAssignScope.GLOBAL 1> flags=0 words=[] bindings=[('i', {[ArithSub {A2 AS_OP_MINUS {A Atom NODE_ARITH_WORD {[VarSub i]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})]) ) ) (Com {[LIT_CHARS test_expect_success]} {[DQ [LIT_CHARS "add notes to "][VarSub num_commits][LIT_CHARS " commits in each of "][VarSub num_notes_refs][LIT_CHARS " refs"]]} {[SQ <LIT_CHARS "\n"> <LIT_CHARS "\n"> <LIT_CHARS "\tgit fast-import --active-branches=5 <input &&\n"> <LIT_CHARS "\tGIT_NOTES_REF=refs/notes/more_notes_1 git log refs/heads/more_commits |\n"> <LIT_CHARS "\t grep \"^ \" > actual &&\n"> <LIT_CHARS "\ttest_cmp expect actual\n"> <LIT_CHARS "\n">]} ) (Com {[LIT_CHARS test_done]} ) )