(command.CommandList children: [ (C {(Lit_Other ':')} {(included)} {(from)} {(6002)} {(and)} {(others)}) (C {(mkdir)} {(-p)} {(.git/refs/tags)}) (command.SimpleCommand redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(sed.script)})] ) (command.FuncDef name: tag body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:_tag spids:[43]) op: Equal rhs: {($ VSub_Number '$1')} spids: [43] ) ] spids: [43] ) (command.AndOr ops: [Op_DPipe] children: [ (C {(test)} {(-f)} {(DQ (.git/refs/tags/) ($ VSub_Name '$_tag'))}) (C {(error)} { (DQ ('tag: ') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ($ VSub_Name '$_tag') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (' does not exist') ) } ) ] ) (C {(cat)} {(DQ (.git/refs/tags/) ($ VSub_Name '$_tag'))}) ] spids: [40] ) spids: [35 39] ) (command.FuncDef name: unique_commit body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:_text spids:[93]) op: Equal rhs: {($ VSub_Number '$1')} spids: [93] ) ] spids: [93] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:_tree spids:[97]) op: Equal rhs: {($ VSub_Number '$2')} spids: [97] ) ] spids: [97] ) (C {(shift)} {(2)}) (command.Pipeline children: [ (C {(echo)} {(DQ ($ VSub_Name '$_text'))}) (C {(git)} {(commit-tree)} { (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(tag)} {(DQ ($ VSub_Name '$_tree'))})] ) left_token: <Left_CommandSub '$('> spids: [118 124] ) } {(DQ ($ VSub_At '$@'))} ) ] negated: F ) ] spids: [90] ) spids: [85 89] ) (command.FuncDef name: save_tag body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:_tag spids:[147]) op: Equal rhs: {($ VSub_Number '$1')} spids: [147] ) ] spids: [147] ) (command.AndOr ops: [Op_DPipe] children: [ (C {(test)} {(-n)} {(DQ ($ VSub_Name '$_tag'))}) (C {(error)} {(DQ ('usage: save_tag tag commit-args ...'))}) ] ) (C {(shift)} {(1)}) (command.SimpleCommand words: [{(DQ ($ VSub_At '$@'))}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ (.git/refs/tags/) ($ VSub_Name '$_tag'))} ) ] ) (command.SimpleCommand words: [ {(echo)} { (DQ (s/) (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(tag)} {($ VSub_Name '$_tag')})] ) left_token: <Left_CommandSub '$('> spids: [189 193] ) (/) ($ VSub_Name '$_tag') (/g) ) } ] redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(sed.script.tmp)})] ) (command.SimpleCommand words: [{(cat)} {(sed.script)}] redirects: [(redir.Redir op:<Redir_DGreat '>>'> fd:16777215 arg_word:{(sed.script.tmp)})] ) (C {(rm)} {(sed.script)}) (C {(mv)} {(sed.script.tmp)} {(sed.script)}) ] spids: [144] ) spids: [139 143] ) (command.FuncDef name: entag body: (command.BraceGroup children:[(C {(sed)} {(-f)} {(sed.script)})] spids:[233]) spids: [228 232] ) (command.FuncDef name: as_author body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:_author spids:[259]) op: Equal rhs: {($ VSub_Number '$1')} spids: [259] ) ] spids: [259] ) (C {(shift)} {(1)}) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:_save spids:[268]) op: Equal rhs: {($ VSub_Name '$GIT_AUTHOR_EMAIL')} spids: [268] ) ] spids: [268] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:GIT_AUTHOR_EMAIL spids:[273]) op: Equal rhs: {(DQ ($ VSub_Name '$_author'))} spids: [273] ) ] spids: [273] ) (C {(export)} {(GIT_AUTHOR_EMAIL)}) (C {(DQ ($ VSub_At '$@'))}) (command.If arms: [ (if_arm cond: [(C {(test)} {(-z)} {(DQ ($ VSub_Name '$_save'))})] action: [(C {(unset)} {(GIT_AUTHOR_EMAIL)})] spids: [16777215 300] ) ] else_action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:GIT_AUTHOR_EMAIL spids:[311]) op: Equal rhs: {(DQ ($ VSub_Name '$_save'))} spids: [311] ) ] spids: [311] ) (C {(export)} {(GIT_AUTHOR_EMAIL)}) ] spids: [308 322] ) ] spids: [256] ) spids: [251 255] ) (command.FuncDef name: commit_date body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:_commit spids:[335]) op: Equal rhs: {($ VSub_Number '$1')} spids: [335] ) ] spids: [335] ) (command.Pipeline children: [ (C {(git)} {(cat-file)} {(commit)} {($ VSub_Name '$_commit')}) (C {(sed)} {(-n)} { (DQ ('s/^committer .*> ') (Lit_Other '\\') ('([0-9]*') (Lit_Other '\\') (') .*/') (Lit_Other '\\') (1/p) ) } ) ] negated: F ) ] spids: [332] ) spids: [327 331] ) (command.FuncDef name: assign_fake_date body: (command.BraceGroup children: [ (command.Case to_match: {(DQ ($ VSub_Number '$2'))} arms: [ (case_arm pat_list: [ {(Lit_Other '?') (Lit_Other '?') (Lit_Other ':') (Lit_Other '?') (Lit_Other '?') (Lit_Other ':') (Lit_Other '?') (Lit_Other '?') } ] action: [ (C {(eval)} {(DQ ($ VSub_Number '$1') ("='1971-08-16 ") ($ VSub_Number '$2') ("'"))}) ] spids: [390 398 409 16777215] ) (case_arm pat_list: [ {(Lit_Other '?') (Lit_Other '?') (Lit_Other ':') (Lit_Other '?') (Lit_Other '?')} ] action: [ (C {(eval)} {(DQ ($ VSub_Number '$1') ("='1971-08-16 00:") ($ VSub_Number '$2') ("'"))} ) ] spids: [412 417 428 16777215] ) (case_arm pat_list: [{(Lit_Other '?') (Lit_Other '?')}] action: [ (C {(eval)} {(DQ ($ VSub_Number '$1') ("='1971-08-16 00:00:") ($ VSub_Number '$2') ("'"))} ) ] spids: [431 433 444 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [(C {(eval)} {(DQ ($ VSub_Number '$1') ("='") ($ VSub_Number '$2') ("'"))})] spids: [447 448 459 16777215] ) ] spids: [381 387 462] ) ] spids: [378] ) spids: [373 377] ) (command.FuncDef name: on_committer_date body: (command.BraceGroup children: [ (C {(assign_fake_date)} {(GIT_COMMITTER_DATE)} {(DQ ($ VSub_Number '$1'))}) (C {(export)} {(GIT_COMMITTER_DATE)}) (C {(shift)} {(1)}) (C {(DQ ($ VSub_At '$@'))}) ] spids: [472] ) spids: [467 471] ) (command.FuncDef name: on_dates body: (command.BraceGroup children: [ (C {(assign_fake_date)} {(GIT_COMMITTER_DATE)} {(DQ ($ VSub_Number '$1'))}) (C {(assign_fake_date)} {(GIT_AUTHOR_DATE)} {(DQ ($ VSub_Number '$2'))}) (C {(export)} {(GIT_COMMITTER_DATE)} {(GIT_AUTHOR_DATE)}) (C {(shift)} {(2)}) (C {(DQ ($ VSub_At '$@'))}) ] spids: [506] ) spids: [501 505] ) (command.FuncDef name: hide_error body: (command.BraceGroup children: [ (command.SimpleCommand words: [{(DQ ($ VSub_At '$@'))}] redirects: [(redir.Redir op:<Redir_Great '2>'> fd:2 arg_word:{(/dev/null)})] ) ] spids: [554] ) spids: [549 553] ) (command.FuncDef name: check_output body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:_name spids:[575]) op: Equal rhs: {($ VSub_Number '$1')} spids: [575] ) ] spids: [575] ) (C {(shift)} {(1)}) (command.If arms: [ (if_arm cond: [ (command.Pipeline children: [ (C {(eval)} {(DQ ($ VSub_Star '$*'))}) (command.SimpleCommand words: [{(entag)}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_Name '$_name') (.actual))} ) ] ) ] negated: F ) ] action: [ (C {(test_cmp)} {(DQ ($ VSub_Name '$_name') (.expected))} {(DQ ($ VSub_Name '$_name') (.actual))} ) ] spids: [16777215 603] ) ] else_action: [(command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})] spids: [619 627] ) ] spids: [572] ) spids: [567 571] ) (command.FuncDef name: name_from_description body: (command.BraceGroup children: [ (C {(perl)} {(-pe)} { (SQ <'\n'> <'\t\ts/[^A-Za-z0-9.]/-/g;\n'> <'\t\ts/-+/-/g;\n'> <'\t\ts/-$//;\n'> <'\t\ts/^-//;\n'> <'\t\ty/A-Z/a-z/;\n'> <'\t'> ) } ) ] spids: [646] ) spids: [641 645] ) (command.FuncDef name: test_output_expect_success body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:_description spids:[686]) op: Equal rhs: {($ VSub_Number '$1')} spids: [686] ) ] spids: [686] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:_test spids:[690]) op: Equal rhs: {($ VSub_Number '$2')} spids: [690] ) ] spids: [690] ) (command.AndOr ops: [Op_DPipe] children: [ (C {(test)} {($ VSub_Pound '$#')} {(-eq)} {(2)}) (C {(error)} {(DQ ('usage: test_output_expect_success description test <<EOF ... EOF'))}) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:_name spids:[713]) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(echo)} {($ VSub_Name '$_description')}) (C {(name_from_description)}) ] negated: F ) ] ) left_token: <Left_CommandSub '$('> spids: [714 722] ) } spids: [713] ) ] spids: [713] ) (command.SimpleCommand words: [{(cat)}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_Name '$_name') (.expected))} ) ] ) (C {(test_expect_success)} {(DQ ($ VSub_Name '$_description'))} { (DQ ('check_output ') ($ VSub_Name '$_name') (' ') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ($ VSub_Name '$_test') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ) } ) ] spids: [683] ) spids: [679 682] ) ] )