(command.CommandList children: [ (command.ShAssignment left: <Id.Lit_VarLike 'todo='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'todo='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'todo='> name:todo) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName state_dir)) <'/git-rebase-todo'>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'done='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'done='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'done='> name:done) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName state_dir)) <'/done'>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'msg='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'msg='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'msg='> name:msg) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName state_dir)) <'/message'>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'squash_msg='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'squash_msg='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'squash_msg='> name:squash_msg) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName state_dir)) <'/message-squash'>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'fixup_msg='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'fixup_msg='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'fixup_msg='> name:fixup_msg) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName state_dir)) <'/message-fixup'>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'rewritten='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'rewritten='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rewritten='> name:rewritten) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName state_dir)) <'/rewritten'>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'dropped='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'dropped='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dropped='> name:dropped) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName state_dir)) <'/dropped'>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'end='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'end='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'end='> name:end) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName state_dir)) <'/end'>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'msgnum='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'msgnum='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'msgnum='> name:msgnum) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName state_dir)) <'/msgnum'>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'author_script='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'author_script='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'author_script='> name:author_script) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName state_dir)) <'/author-script'>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'amend='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'amend='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'amend='> name:amend) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName state_dir)) <'/amend'>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'rewritten_list='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'rewritten_list='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rewritten_list='> name:rewritten_list) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName state_dir)) <'/rewritten-list'>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'rewritten_pending='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'rewritten_pending='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rewritten_pending='> name:rewritten_pending) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName state_dir)) <'/rewritten-pending'>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'cr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cr='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cr='> name:cr) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <printf> more_env: [] words: [{<printf>} {(DQ <Id.Lit_BadBackslash '\\'> <015>)}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'strategy_args='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'strategy_args='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'strategy_args='> name:strategy_args) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name strategy> var_name: strategy suffix_op: (suffix_op.Unary op: <Id.VTest_ColonPlus _> arg_word: {<'--strategy='> ($ Id.VSub_DollarName strategy)} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName strategy_opts))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <eval> more_env: [] words: [ {<eval>} {(SQ <'\n'> <'\tfor strategy_opt in '>) (DQ ($ Id.VSub_DollarName strategy_opts)) (SQ <'\n'> <'\tdo\n'> < '\t\tstrategy_args="$strategy_args -X$(git rev-parse --sq-quote "${strategy_opt#--}")"\n' > <'\tdone\n'> ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'GIT_CHERRY_PICK_HELP='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'GIT_CHERRY_PICK_HELP='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'GIT_CHERRY_PICK_HELP='> name: GIT_CHERRY_PICK_HELP ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName resolvemsg))} ) ] redirects: [] ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<GIT_CHERRY_PICK_HELP>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'comment_char='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'comment_char='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'comment_char='> name:comment_char) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (command.Simple blame_tok: <git> more_env: [] words: [{<git>} {<config>} {<--get>} {<core.commentchar>}] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-c1>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [ {<Id.Lit_Colon ':'>} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name comment_char> var_name: comment_char suffix_op: (suffix_op.Unary op:<Id.VTest_ColonEquals _> arg_word:{<Id.Lit_Pound '#'>}) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.ShFunction name_tok: <warn> name: warn body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <printf> more_env: [] words: [{<printf>} {(SQ <'%s\\n'>)} {(DQ ($ Id.VSub_Star '*'))}] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <commit_message> name: commit_message body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Pipeline children: [ (command.Simple blame_tok: <git> more_env: [] words: [{<git>} {<cat-file>} {<commit>} {(DQ ($ Id.VSub_Number 1))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {(DQ <'1,/^'> <Id.Lit_Dollar '$'> <'/d'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment left: <Id.Lit_VarLike 'orig_reflog_action='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'orig_reflog_action='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'orig_reflog_action='> name:orig_reflog_action) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName GIT_REFLOG_ACTION))} ) ] redirects: [] ) (command.ShFunction name_tok: <comment_for_reflog> name: comment_for_reflog body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName orig_reflog_action))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )} {<rebase> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'GIT_REFLOG_ACTION='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'GIT_REFLOG_ACTION='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'GIT_REFLOG_ACTION='> name: GIT_REFLOG_ACTION ) op: assign_op.Equal rhs: {(DQ <'rebase -i ('> ($ Id.VSub_Number 1) <')'>)} ) ] redirects: [] ) (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<GIT_REFLOG_ACTION>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment left: <Id.Lit_VarLike 'last_count='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'last_count='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'last_count='> name:last_count) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShFunction name_tok: <mark_action_done> name: mark_action_done body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {<-e>} {<1q>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName todo))} ) (Redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName done))} ) ] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {<-e>} {<1d>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName todo))} ) (Redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName todo)) <.new>} ) ] do_fork: T ) (command.Simple blame_tok: <mv> more_env: [] words: [ {<mv>} {<-f>} {(DQ ($ Id.VSub_DollarName todo)) <.new>} {(DQ ($ Id.VSub_DollarName todo))} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'new_count='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'new_count='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'new_count='> name:new_count) op: assign_op.Equal rhs: { (word_part.ArithSub left: <Id.Left_DollarDParen '$(('> anode: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (command.Simple blame_tok: <git> more_env: [] words: [{<git>} {<stripspace>} {<--strip-comments>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName done))} ) ] do_fork: T ) (command.Simple blame_tok: <wc> more_env: [] words: [{<wc>} {<-l>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Eof_RParen _> ) } right: <Id.Right_DollarDParen _> ) } ) ] redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName new_count)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName msgnum))} ) ] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'total='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'total='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'total='> name:total) op: assign_op.Equal rhs: { (word_part.ArithSub left: <Id.Left_DollarDParen '$(('> anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName new_count)} right: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (command.Simple blame_tok: <git> more_env: [] words: [{<git>} {<stripspace>} {<--strip-comments>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName todo))} ) ] do_fork: T ) (command.Simple blame_tok: <wc> more_env: [] words: [{<wc>} {<-l>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Eof_RParen _> ) } ) right: <Id.Right_DollarDParen _> ) } ) ] redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName total)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName end))} ) ] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {(DQ ($ Id.VSub_DollarName last_count))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName new_count))} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'last_count='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'last_count='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'last_count='> name:last_count) op: assign_op.Equal rhs: {($ Id.VSub_DollarName new_count)} ) ] redirects: [] ) (command.Sentence child: (command.Simple blame_tok: <eval_gettext> more_env: [] words: [ {<eval_gettext>} { (DQ <'Rebasing ('> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'new_count/'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'total)'> ) } ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <printf> more_env: [] words: [{<printf>} {(DQ <Id.Lit_BadBackslash '\\'> <r>)}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName verbose))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] spids: [592 608] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <reschedule_last_action> name: reschedule_last_action body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Pipeline children: [ (command.Simple blame_tok: <tail> more_env: [] words: [{<tail>} {<-n>} {<1>} {(DQ ($ Id.VSub_DollarName done))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {<->} {(DQ ($ Id.VSub_DollarName todo))}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName todo)) <.new>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <d>} ] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName done))} ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName done)) <.new>} ) ] do_fork: T ) (command.Simple blame_tok: <mv> more_env: [] words: [ {<mv>} {<-f>} {(DQ ($ Id.VSub_DollarName todo)) <.new>} {(DQ ($ Id.VSub_DollarName todo))} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <mv> more_env: [] words: [ {<mv>} {<-f>} {(DQ ($ Id.VSub_DollarName done)) <.new>} {(DQ ($ Id.VSub_DollarName done))} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <append_todo_help> name: append_todo_help body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Pipeline children: [ (command.Simple blame_tok: <gettext> more_env: [] words: [ {<gettext>} { (DQ <'\n'> <'Commands:\n'> <' p, pick = use commit\n'> <' r, reword = use commit, but edit the commit message\n'> <' e, edit = use commit, but stop for amending\n'> <' s, squash = use commit, but meld into previous commit\n'> <' f, fixup = like '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <squash> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) <', but discard this commit\'s log message\n'> <' x, exec = run command (the rest of the line) using shell\n'> <' d, drop = remove commit\n'> <'\n'> <'These lines can be re-ordered; they are executed from top to bottom.\n'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <git> more_env: [] words: [{<git>} {<stripspace>} {<--comment-lines>}] redirects: [ (Redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName todo))} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <get_missing_commit_check_level> more_env: [] words: [{<get_missing_commit_check_level>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } {<Id.Lit_Equals '='>} {<error>} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Pipeline children: [ (command.Simple blame_tok: <gettext> more_env: [] words: [ {<gettext>} { (DQ <'\n'> < 'Do not remove any line. Use \'drop\' explicitly to remove a commit.\n' > ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <git> more_env: [] words: [{<git>} {<stripspace>} {<--comment-lines>}] redirects: [ (Redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName todo))} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) ] spids: [788 801] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Pipeline children: [ (command.Simple blame_tok: <gettext> more_env: [] words: [ {<gettext>} {(DQ <'\n'> <'If you remove a line here THAT COMMIT WILL BE LOST.\n'>)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <git> more_env: [] words: [{<git>} {<stripspace>} {<--comment-lines>}] redirects: [ (Redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName todo))} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <make_patch> name: make_patch body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'sha1_and_parents='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sha1_and_parents='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'sha1_and_parents='> name: sha1_and_parents ) op: assign_op.Equal rhs: { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <git> more_env: [] words: [{<git>} {<rev-list>} {<--parents>} {<-1>} {(DQ ($ Id.VSub_Number 1))}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName sha1_and_parents))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [ {<Id.Lit_QMark '?'> <Id.Lit_Star '*'> (SQ <' '>) <Id.Lit_QMark '?'> <Id.Lit_Star '*'> (SQ <' '>) <Id.Lit_QMark '?'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <git> more_env: [] words: [{<git>} {<diff>} {<--cc>} {($ Id.VSub_DollarName sha1_and_parents)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words: [ {<Id.Lit_QMark '?'> <Id.Lit_Star '*'> (SQ <' '>) <Id.Lit_QMark '?'> <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <git> more_env: [] words: [{<git>} {<diff-tree>} {<-p>} {(DQ ($ Id.VSub_Number 1) <'^!'>)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Root commit'>)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName state_dir)) <'/patch'>} ) ] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-f>} {(DQ ($ Id.VSub_DollarName msg))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <commit_message> more_env: [] words: [{<commit_message>} {(DQ ($ Id.VSub_Number 1))}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName msg))} ) ] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-f>} {(DQ ($ Id.VSub_DollarName author_script))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <get_author_ident_from_commit> more_env: [] words: [{<get_author_ident_from_commit>} {(DQ ($ Id.VSub_Number 1))}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName author_script))} ) ] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <die_with_patch> name: die_with_patch body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ ($ Id.VSub_Number 1))}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName state_dir)) <'/stopped-sha'>} ) ] do_fork: T ) (command.Simple blame_tok: <make_patch> more_env: [] words: [{<make_patch>} {(DQ ($ Id.VSub_Number 1))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <die> more_env: [] words: [{<die>} {(DQ ($ Id.VSub_Number 2))}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <exit_with_patch> name: exit_with_patch body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ ($ Id.VSub_Number 1))}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName state_dir)) <'/stopped-sha'>} ) ] do_fork: T ) (command.Simple blame_tok: <make_patch> more_env: [] words: [{<make_patch>} {($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <git> more_env: [] words: [{<git>} {<rev-parse>} {<--verify>} {<HEAD>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName amend))} ) ] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'gpg_sign_opt_quoted='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'gpg_sign_opt_quoted='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'gpg_sign_opt_quoted='> name: gpg_sign_opt_quoted ) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name gpg_sign_opt> var_name: gpg_sign_opt suffix_op: (suffix_op.Unary op: <Id.VTest_ColonPlus _> arg_word: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <git> more_env: [] words: [ {<git>} {<rev-parse>} {<--sq-quote>} {(DQ ($ Id.VSub_DollarName gpg_sign_opt))} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.Simple blame_tok: <warn> more_env: [] words: [ {<warn>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <eval_gettext> more_env: [] words: [ {<eval_gettext>} { (DQ <'You can amend the commit now, with\n'> <'\n'> <'\tgit commit --amend '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'gpg_sign_opt_quoted\n'> <'\n'> <'Once you are satisfied with your changes, run\n'> <'\n'> <'\tgit rebase --continue'> ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <warn> more_env: [] words: [{<warn>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {($ Id.VSub_Number 2)} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <die_abort> name: die_abort body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <apply_autostash> more_env: [] words: [{<apply_autostash>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-rf>} {(DQ ($ Id.VSub_DollarName state_dir))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <die> more_env: [] words: [{<die>} {(DQ ($ Id.VSub_Number 1))}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <has_action> name: has_action body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-n>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <git> more_env: [] words: [{<git>} {<stripspace>} {<--strip-comments>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_Number 1))} ) ] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <is_empty_commit> name: is_empty_commit body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr children: [ (command.ShAssignment left: <Id.Lit_VarLike 'tree='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'tree='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tree='> name:tree) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <git> more_env: [] words: [ {<git>} {<rev-parse>} {<-q>} {<--verify>} {(DQ ($ Id.VSub_Number 1)) <Id.Lit_Other '^'> <Id.Lit_LBrace '{'> <tree> <Id.Lit_RBrace '}'> } ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'sha1='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sha1='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sha1='> name:sha1) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.Simple blame_tok: <die> more_env: [] words: [ {<die>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <eval_gettext> more_env: [] words: [ {<eval_gettext>} { (DQ (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'sha1: not a commit that can be picked'> ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.ShAssignment left: <Id.Lit_VarLike 'ptree='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ptree='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ptree='> name:ptree) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <git> more_env: [] words: [ {<git>} {<rev-parse>} {<-q>} {<--verify>} {(DQ ($ Id.VSub_Number 1)) <Id.Lit_Other '^'> <Id.Lit_Other '^'> <Id.Lit_LBrace '{'> <tree> <Id.Lit_RBrace '}'> } ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'ptree='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ptree='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ptree='> name:ptree) op: assign_op.Equal rhs: {<4b825dc642cb6eb9a060e54bf8d69288fbee4904>} ) ] redirects: [] ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {(DQ ($ Id.VSub_DollarName tree))} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName ptree))} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <is_merge_commit> name: is_merge_commit body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <git> more_env: [] words: [ {<git>} {<rev-parse>} {<--verify>} {<--quiet>} {(DQ ($ Id.VSub_Number 1)) <Id.Lit_Other '^'> <2>} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (Redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>}) ] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <do_with_author> name: do_with_author body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Subshell left: <Id.Op_LParen _> child: (command.CommandList children: [ (command.Simple blame_tok: <export> more_env: [] words: [{<export>} {<GIT_AUTHOR_NAME>} {<GIT_AUTHOR_EMAIL>} {<GIT_AUTHOR_DATE>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.Left_DoubleQuote '"'> more_env: [] words: [{(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) ] ) right: <Id.Right_Subshell _> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <git_sequence_editor> name: git_sequence_editor body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName GIT_SEQUENCE_EDITOR))}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'GIT_SEQUENCE_EDITOR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'GIT_SEQUENCE_EDITOR='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'GIT_SEQUENCE_EDITOR='> name: GIT_SEQUENCE_EDITOR ) op: assign_op.Equal rhs: { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <git> more_env: [] words: [{<git>} {<config>} {<sequence.editor>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName GIT_SEQUENCE_EDITOR))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.AndOr children: [ (command.ShAssignment left: <Id.Lit_VarLike 'GIT_SEQUENCE_EDITOR='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'GIT_SEQUENCE_EDITOR='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'GIT_SEQUENCE_EDITOR='> name: GIT_SEQUENCE_EDITOR ) op: assign_op.Equal rhs: { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <git> more_env: [] words: [{<git>} {<Id.KW_Var var>} {<GIT_EDITOR>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ) ] redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_QMark '?')} ) ] ops: [<Id.Op_DPipe _>] ) ] spids: [1404 1417] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [1378 1389] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {(DQ ($ Id.VSub_DollarName GIT_SEQUENCE_EDITOR))} {(SQ <'"$@"'>)}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <pick_one> name: pick_one body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'ff='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ff='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ff='> name:ff) op: assign_op.Equal rhs: {<--ff>} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ ($ Id.VSub_Number 1))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-n> pattern: (pat.Words words:[{<-n>}]) middle: <Id.Right_CasePat _> action: [ (command.Sentence child: (command.ShAssignment left: <Id.Lit_VarLike 'sha1='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sha1='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sha1='> name:sha1) op: assign_op.Equal rhs: {($ Id.VSub_Number 2)} ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.ShAssignment left: <Id.Lit_VarLike 'ff='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ff='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ff='> name:ff) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'sha1='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sha1='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sha1='> name:sha1) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName force_rebase))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_QMark '?'> pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'ff='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ff='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ff='> name:ff) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <output> more_env: [] words: [{<output>} {<git>} {<rev-parse>} {<--verify>} {($ Id.VSub_DollarName sha1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <die> more_env: [] words: [ {<die>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <eval_gettext> more_env: [] words: [ {<eval_gettext>} { (DQ <'Invalid commit name: '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <sha1> ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <is_empty_commit> more_env: [] words: [{<is_empty_commit>} {(DQ ($ Id.VSub_DollarName sha1))}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'empty_args='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'empty_args='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'empty_args='> name:empty_args) op: assign_op.Equal rhs: {(DQ <--allow-empty>)} ) ] redirects: [] ) ] spids: [1554 1563] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-d>} {(DQ ($ Id.VSub_DollarName rewritten))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <pick_one_preserving_merges> more_env: [] words: [{<pick_one_preserving_merges>} {(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Return return>) ] ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>] ) (command.Simple blame_tok: <output> more_env: [] words: [ {<output>} {<eval>} {<git>} {<cherry-pick>} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name gpg_sign_opt> var_name: gpg_sign_opt suffix_op: (suffix_op.Unary op: <Id.VTest_ColonPlus _> arg_word: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <git> more_env: [] words: [ {<git>} {<rev-parse>} {<--sq-quote>} {(DQ ($ Id.VSub_DollarName gpg_sign_opt))} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) right: <Id.Right_DollarBrace '}'> ) } {(DQ ($ Id.VSub_DollarName strategy_args))} {($ Id.VSub_DollarName empty_args)} {($ Id.VSub_DollarName ff)} {(DQ ($ Id.VSub_At '@'))} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'ret='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ret='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ret='> name:ret) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName ret))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_LBracket '['> pattern: (pat.Words words:[{<Id.Lit_LBracket '['> <01> <Id.Lit_RBracket ']'>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <reschedule_last_action> more_env: [] words: [{<reschedule_last_action>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_DollarName ret)} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <pick_one_preserving_merges> name: pick_one_preserving_merges body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'fast_forward='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'fast_forward='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'fast_forward='> name:fast_forward) op: assign_op.Equal rhs: {<t>} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ ($ Id.VSub_Number 1))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <-n> pattern: (pat.Words words:[{<-n>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'fast_forward='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'fast_forward='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'fast_forward='> name: fast_forward ) op: assign_op.Equal rhs: {<f>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'sha1='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sha1='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sha1='> name:sha1) op: assign_op.Equal rhs: {($ Id.VSub_Number 2)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'sha1='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sha1='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sha1='> name:sha1) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'sha1='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sha1='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sha1='> name:sha1) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <git> more_env: [] words: [{<git>} {<rev-parse>} {($ Id.VSub_DollarName sha1)}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} {(DQ ($ Id.VSub_DollarName state_dir)) <'/current-commit'>} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {(DQ ($ Id.VSub_DollarName fast_forward))} {<Id.Lit_Equals '='>} {<t>} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<current_commit>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <git> more_env: [] words: [{<git>} {<rev-parse>} {<HEAD>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName rewritten)) <'/'> ($ Id.VSub_DollarName current_commit) } ) ] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName state_dir)) <'/current-commit'>} ) ] ) (command.AndOr children: [ (command.Simple blame_tok: <rm> more_env: [] words: [ {<rm>} {(DQ ($ Id.VSub_DollarName state_dir)) <'/current-commit'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <die> more_env: [] words: [ {<die>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <gettext> more_env: [] words: [ {<gettext>} { (DQ < 'Cannot write current commit\'s replacement sha1' > ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] spids: [1760 1773] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [1745 1757] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName sha1)}] redirects: [ (Redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName state_dir)) <'/current-commit'>} ) ] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'new_parents='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'new_parents='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'new_parents='> name:new_parents) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'pend='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'pend='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pend='> name:pend) op: assign_op.Equal rhs: { (DQ <' '> (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (command.Simple blame_tok: <git> more_env: [] words: [ {<git>} {<rev-list>} {<--parents>} {<-1>} {($ Id.VSub_DollarName sha1)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-d> (SQ <' '>)} {<-s>} {<-f2->}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Eof_RParen _> ) ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {(DQ ($ Id.VSub_DollarName pend))} {<Id.Lit_Equals '='>} {(DQ <' '>)} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'pend='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'pend='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pend='> name:pend) op: assign_op.Equal rhs: {(DQ <' root'>)} ) ] redirects: [] ) ] spids: [1890 1905] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName pend))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'p='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'p='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'p='> name:p) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <expr> more_env: [] words: [ {<expr>} {(DQ ($ Id.VSub_DollarName pend))} {<Id.Lit_Colon ':'>} {(SQ <' \\([^ ]*\\)'>)} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'pend='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'pend='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pend='> name:pend) op: assign_op.Equal rhs: { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name pend> var_name: pend suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<' '> ($ Id.VSub_DollarName p)} ) right: <Id.Right_DollarBrace '}'> ) ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} {(DQ ($ Id.VSub_DollarName rewritten)) <'/'> ($ Id.VSub_DollarName p) } ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'new_p='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'new_p='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'new_p='> name:new_p) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <cat> more_env: [] words: [ {<cat>} {(DQ ($ Id.VSub_DollarName rewritten)) <'/'> ($ Id.VSub_DollarName p) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName new_p))}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'new_p='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'new_p='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'new_p='> name: new_p ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <git> more_env: [] words: [{<git>} {<rev-parse>} {<HEAD>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) ] spids: [2006 2017] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {($ Id.VSub_DollarName p)} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {($ Id.VSub_DollarName new_p)} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'fast_forward='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'fast_forward='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'fast_forward='> name: fast_forward ) op: assign_op.Equal rhs: {<f>} ) ] redirects: [] ) ] ops: [<Id.Op_DAmp _>] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName new_parents))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> ($ Id.VSub_DollarName new_p) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'new_parents='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'new_parents='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'new_parents='> name: new_parents ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName new_parents) <' '> ($ Id.VSub_DollarName new_p) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] spids: [1965 1978] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} {(DQ ($ Id.VSub_DollarName dropped)) <'/'> ($ Id.VSub_DollarName p) } ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'fast_forward='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'fast_forward='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'fast_forward='> name: fast_forward ) op: assign_op.Equal rhs: {<f>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'replacement='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'replacement='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'replacement='> name: replacement ) op: assign_op.Equal rhs: { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <cat> more_env: [] words: [ {<cat>} {(DQ ($ Id.VSub_DollarName dropped)) <'/'> ($ Id.VSub_DollarName p) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ) ] redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName replacement))}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'replacement='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'replacement='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'replacement='> name: replacement ) op: assign_op.Equal rhs: {<root>} ) ] redirects: [] ) ] ops: [<Id.Op_DAmp _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'pend='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'pend='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pend='> name:pend) op: assign_op.Equal rhs: { (DQ <' '> ($ Id.VSub_DollarName replacement) ($ Id.VSub_DollarName pend) ) } ) ] redirects: [] ) ] spids: [2091 2104] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'new_parents='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'new_parents='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'new_parents='> name: new_parents ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName new_parents) <' '> ($ Id.VSub_DollarName p) ) } ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName fast_forward)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <t> pattern: (pat.Words words:[{<t>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <output> more_env: [] words: [ {<output>} {<warn>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <eval_gettext> more_env: [] words: [ {<eval_gettext>} { (DQ <'Fast-forward to '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <sha1> ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <output> more_env: [] words: [{<output>} {<git>} {<reset>} {<--hard>} {($ Id.VSub_DollarName sha1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <die> more_env: [] words: [ {<die>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <eval_gettext> more_env: [] words: [ {<eval_gettext>} { (DQ <'Cannot fast-forward to '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <sha1> ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <f> pattern: (pat.Words words:[{<f>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'first_parent='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'first_parent='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'first_parent='> name: first_parent ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <expr> more_env: [] words: [ {<expr>} {(DQ ($ Id.VSub_DollarName new_parents))} {<Id.Lit_Colon ':'>} {(SQ <' \\([^ ]*\\)'>)} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number 1))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <-n>)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.AndOr children: [ (command.Simple blame_tok: <output> more_env: [] words: [ {<output>} {<git>} {<checkout>} {($ Id.VSub_DollarName first_parent)} ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple blame_tok: <die> more_env: [] words: [ {<die>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <eval_gettext> more_env: [] words: [ {<eval_gettext>} { (DQ <'Cannot move HEAD to '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <first_parent> ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] spids: [2247 2265] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName new_parents))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words: [{(SQ <' '>) <Id.Lit_Star '*'> (SQ <' '>) <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {(DQ <a> ($ Id.VSub_Number 1))} {<Id.Lit_Equals '='>} {<a-n>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <die> more_env: [] words: [ {<die>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <eval_gettext> more_env: [] words: [ {<eval_gettext>} { (DQ <'Refusing to squash a merge: '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <sha1> ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'author_script_content='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'author_script_content='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'author_script_content='> name: author_script_content ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <get_author_ident_from_commit> more_env: [] words: [ {<get_author_ident_from_commit>} {($ Id.VSub_DollarName sha1)} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {(DQ ($ Id.VSub_DollarName author_script_content))}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'msg_content='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'msg_content='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'msg_content='> name: msg_content ) op: assign_op.Equal rhs: { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <commit_message> more_env: [] words: [{<commit_message>} {($ Id.VSub_DollarName sha1)}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'new_parents='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'new_parents='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'new_parents='> name: new_parents ) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name new_parents> var_name: new_parents suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<' '> ($ Id.VSub_DollarName first_parent)} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'merge_args='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'merge_args='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'merge_args='> name: merge_args ) op: assign_op.Equal rhs: {(DQ <'--no-log --no-ff'>)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <do_with_author> more_env: [] words: [ {<do_with_author>} {<output>} {<eval>} { (SQ < 'git merge ${gpg_sign_opt:+"$gpg_sign_opt"} \\\n' > <'\t\t\t\t$merge_args $strategy_args -m "$msg_content" $new_parents'> ) } ] redirects: [] do_fork: T ) ] ops: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <printf> more_env: [] words: [ {<printf>} {(DQ <'%s'> <Id.Lit_BadBackslash '\\'> <n>)} {(DQ ($ Id.VSub_DollarName msg_content))} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName GIT_DIR)) <'/MERGE_MSG'>} ) ] do_fork: T ) (command.Simple blame_tok: <die_with_patch> more_env: [] words: [ {<die_with_patch>} {($ Id.VSub_DollarName sha1)} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <eval_gettext> more_env: [] words: [ {<eval_gettext>} { (DQ <'Error redoing merge '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <sha1> ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) ] spids: [2403 2421] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName sha1) <' '> (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <git> more_env: [] words: [{<git>} {<rev-parse>} {<HEAD> <Id.Lit_Other '^'> <0>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [ (Redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName rewritten_list))} ) ] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.Simple blame_tok: <output> more_env: [] words: [ {<output>} {<eval>} {<git>} {<cherry-pick>} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name gpg_sign_opt> var_name: gpg_sign_opt suffix_op: (suffix_op.Unary op: <Id.VTest_ColonPlus _> arg_word: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <git> more_env: [] words: [ {<git>} {<rev-parse>} {<--sq-quote>} {(DQ ($ Id.VSub_DollarName gpg_sign_opt))} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) right: <Id.Right_DollarBrace '}'> ) } {(DQ ($ Id.VSub_DollarName strategy_args))} {(DQ ($ Id.VSub_At '@'))} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <die_with_patch> more_env: [] words: [ {<die_with_patch>} {($ Id.VSub_DollarName sha1)} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <eval_gettext> more_env: [] words: [ {<eval_gettext>} { (DQ <'Could not pick '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <sha1> ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <this_nth_commit_message> name: this_nth_commit_message body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'n='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'n='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'n='> name:n) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.Simple blame_tok: <eval_gettext> more_env: [] words: [ {<eval_gettext>} { (DQ <'This is the commit message #'> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'{n}:'> ) } ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <skip_nth_commit_message> name: skip_nth_commit_message body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'n='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'n='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'n='> name:n) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.Simple blame_tok: <eval_gettext> more_env: [] words: [ {<eval_gettext>} { (DQ <'The commit message #'> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'{n} will be skipped:'> ) } ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <update_squash_messages> name: update_squash_messages body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-f>} {(DQ ($ Id.VSub_DollarName squash_msg))}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.AndOr children: [ (command.Simple blame_tok: <mv> more_env: [] words: [ {<mv>} {(DQ ($ Id.VSub_DollarName squash_msg))} {(DQ ($ Id.VSub_DollarName squash_msg)) <.bak>} ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> ) ] ops: [<Id.Op_DPipe _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'count='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'count='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'count='> name:count) op: assign_op.Equal rhs: { (word_part.ArithSub left: <Id.Left_DollarDParen '$(('> anode: (arith_expr.Binary op_id: Id.Arith_Plus left: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-n>} {<-e>} { (DQ <'1s/^'> ($ Id.VSub_DollarName comment_char) <'.*'> <Id.Lit_BadBackslash '\\'> <'([0-9][0-9]*'> <Id.Lit_BadBackslash '\\'> <').*/'> <Id.Lit_BadBackslash '\\'> <'1/p'> ) } {<-e>} {(DQ <q>)} ] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName squash_msg)) <.bak>} ) ] do_fork: T ) right: <Id.Eof_RParen _> ) } right: {<Id.Lit_Digits 1>} ) right: <Id.Right_DollarDParen _> ) } ) ] redirects: [] ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <printf> more_env: [] words: [ {<printf>} {(SQ <'%s\\n'>)} { (DQ ($ Id.VSub_DollarName comment_char) <' '> (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <eval_ngettext> more_env: [] words: [ {<eval_ngettext>} { (DQ <'This is a combination of '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'count commit.'> ) } { (DQ <'This is a combination of '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'count commits.'> ) } {($ Id.VSub_DollarName count)} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} {<1d>} {<-e>} {(SQ <'2,/^./{\n'> <'\t\t\t\t/^$/d\n'> <'\t\t\t}'>)} ] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName squash_msg)) <.bak>} ) ] do_fork: T ) ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName squash_msg))} ) ] right: <Id.Lit_RBrace '}'> ) ] spids: [2618 2629] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.AndOr children: [ (command.Simple blame_tok: <commit_message> more_env: [] words: [{<commit_message>} {<HEAD>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName fixup_msg))} ) ] do_fork: T ) (command.Simple blame_tok: <die> more_env: [] words: [ {<die>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <gettext> more_env: [] words: [ {<gettext>} { (DQ <'Cannot write '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <fixup_msg> ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'count='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'count='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'count='> name:count) op: assign_op.Equal rhs: {<2>} ) ] redirects: [] ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <printf> more_env: [] words: [ {<printf>} {(SQ <'%s\\n'>)} { (DQ ($ Id.VSub_DollarName comment_char) <' '> (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <gettext> more_env: [] words: [{<gettext>} {(DQ <'This is a combination of 2 commits.'>)}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <printf> more_env: [] words: [ {<printf>} {(SQ <'%s\\n'>)} { (DQ ($ Id.VSub_DollarName comment_char) <' '> (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <gettext> more_env: [] words: [{<gettext>} {(DQ <'This is the 1st commit message:'>)}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {(DQ ($ Id.VSub_DollarName fixup_msg))}] redirects: [] do_fork: T ) ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName squash_msg))} ) ] right: <Id.Lit_RBrace '}'> ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Number 1)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <squash> pattern: (pat.Words words:[{<squash>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName fixup_msg))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <printf> more_env: [] words: [ {<printf>} {(SQ <'%s\\n'>)} { (DQ ($ Id.VSub_DollarName comment_char) <' '> (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <this_nth_commit_message> more_env: [] words: [{<this_nth_commit_message>} {($ Id.VSub_DollarName count)}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <commit_message> more_env: [] words: [{<commit_message>} {($ Id.VSub_Number 2)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <fixup> pattern: (pat.Words words:[{<fixup>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <printf> more_env: [] words: [ {<printf>} {(SQ <'%s\\n'>)} { (DQ ($ Id.VSub_DollarName comment_char) <' '> (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <skip_nth_commit_message> more_env: [] words: [{<skip_nth_commit_message>} {($ Id.VSub_DollarName count)}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <commit_message> more_env: [] words: [{<commit_message>} {($ Id.VSub_Number 2)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <git> more_env: [] words: [{<git>} {<stripspace>} {<--comment-lines>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {<-e>} {(SQ <'s/ /\t/'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [ (Redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName squash_msg))} ) ] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <peek_next_command> name: peek_next_command body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Pipeline children: [ (command.Simple blame_tok: <git> more_env: [] words: [{<git>} {<stripspace>} {<--strip-comments>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName todo))} ) ] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {<-n>} {<-e>} {(SQ <'s/ .*//p'>)} {<-e>} {<q>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <die_failed_squash> name: die_failed_squash body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'sha1='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sha1='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sha1='> name:sha1) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'rest='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'rest='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rest='> name:rest) op: assign_op.Equal rhs: {($ Id.VSub_Number 2)} ) ] redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <mv> more_env: [] words: [ {<mv>} {(DQ ($ Id.VSub_DollarName squash_msg))} {(DQ ($ Id.VSub_DollarName msg))} ] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit>) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName fixup_msg))}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <cp> more_env: [] words: [ {<cp>} {(DQ ($ Id.VSub_DollarName msg))} {(DQ ($ Id.VSub_DollarName GIT_DIR)) <'/MERGE_MSG'>} ] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit>) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <warn> more_env: [] words: [{<warn>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <warn> more_env: [] words: [ {<warn>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <eval_gettext> more_env: [] words: [ {<eval_gettext>} { (DQ <'Could not apply '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'sha1... '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <rest> ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <die_with_patch> more_env: [] words: [{<die_with_patch>} {($ Id.VSub_DollarName sha1)} {(DQ )}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <flush_rewritten_pending> name: flush_rewritten_pending body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-s>} {(DQ ($ Id.VSub_DollarName rewritten_pending))}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Return return>) ] ops: [<Id.Op_DPipe _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'newsha1='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'newsha1='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'newsha1='> name:newsha1) op: assign_op.Equal rhs: { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <git> more_env: [] words: [{<git>} {<rev-parse>} {<HEAD> <Id.Lit_Other '^'> <0>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ) ] redirects: [] ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {(DQ <'s/'> <Id.Lit_Dollar '$'> <'/ '> ($ Id.VSub_DollarName newsha1) <'/'>)} ] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName rewritten_pending))} ) (Redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName rewritten_list))} ) ] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [{<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName rewritten_pending))}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <record_in_rewritten> name: record_in_rewritten body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'oldsha1='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'oldsha1='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'oldsha1='> name:oldsha1) op: assign_op.Equal rhs: { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <git> more_env: [] words: [{<git>} {<rev-parse>} {($ Id.VSub_Number 1)}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ) ] redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ ($ Id.VSub_DollarName oldsha1))}] redirects: [ (Redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName rewritten_pending))} ) ] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <peek_next_command> more_env: [] words: [{<peek_next_command>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <squash> pattern: (pat.Words words:[{<squash>} {<s>} {<fixup>} {<f>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <flush_rewritten_pending> more_env: [] words: [{<flush_rewritten_pending>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <do_pick> name: do_pick body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'sha1='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sha1='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sha1='> name:sha1) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'rest='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'rest='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rest='> name:rest) op: assign_op.Equal rhs: {($ Id.VSub_Number 2)} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <git> more_env: [] words: [{<git>} {<rev-parse>} {<HEAD>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName squash_onto))} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.AndOr children: [ (command.Simple blame_tok: <git> more_env: [] words: [ {<git>} {<commit>} {<--allow-empty>} {<--allow-empty-message>} {<--amend>} {<--no-post-rewrite>} {<-n>} {<-q>} {<-C>} {($ Id.VSub_DollarName sha1)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <pick_one> more_env: [] words: [{<pick_one>} {<-n>} {($ Id.VSub_DollarName sha1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <git> more_env: [] words: [ {<git>} {<commit>} {<--allow-empty>} {<--allow-empty-message>} {<--amend>} {<--no-post-rewrite>} {<-n>} {<-q>} {<-C>} {($ Id.VSub_DollarName sha1)} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name gpg_sign_opt> var_name: gpg_sign_opt suffix_op: (suffix_op.Unary op: <Id.VTest_ColonPlus _> arg_word: {(DQ ($ Id.VSub_DollarName gpg_sign_opt))} ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <die_with_patch> more_env: [] words: [ {<die_with_patch>} {($ Id.VSub_DollarName sha1)} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <eval_gettext> more_env: [] words: [ {<eval_gettext>} { (DQ <'Could not apply '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'sha1... '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <rest> ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DPipe _>] ) ] spids: [3270 3291] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.AndOr children: [ (command.Simple blame_tok: <pick_one> more_env: [] words: [{<pick_one>} {($ Id.VSub_DollarName sha1)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <die_with_patch> more_env: [] words: [ {<die_with_patch>} {($ Id.VSub_DollarName sha1)} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <eval_gettext> more_env: [] words: [ {<eval_gettext>} { (DQ <'Could not apply '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'sha1... '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <rest> ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <do_next> name: do_next body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr children: [ (command.Simple blame_tok: <rm> more_env: [] words: [ {<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName msg))} {(DQ ($ Id.VSub_DollarName author_script))} {(DQ ($ Id.VSub_DollarName amend))} {(DQ ($ Id.VSub_DollarName state_dir)) <'/stopped-sha'>} ] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit>) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<-r>} {<command>} {<sha1>} {<rest>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName todo))} ) ] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName command))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words: [ {(DQ ($ Id.VSub_DollarName comment_char)) <Id.Lit_Star '*'>} {(SQ )} {<noop>} {<drop>} {<d>} ] ) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <mark_action_done> more_env: [] words: [{<mark_action_done>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ ($ Id.VSub_DollarName cr))}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <mark_action_done> more_env: [] words: [{<mark_action_done>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <pick> pattern: (pat.Words words:[{<pick>} {<p>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <comment_for_reflog> more_env: [] words: [{<comment_for_reflog>} {<pick>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <mark_action_done> more_env: [] words: [{<mark_action_done>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <do_pick> more_env: [] words: [ {<do_pick>} {($ Id.VSub_DollarName sha1)} {(DQ ($ Id.VSub_DollarName rest))} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <record_in_rewritten> more_env: [] words: [{<record_in_rewritten>} {($ Id.VSub_DollarName sha1)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <reword> pattern: (pat.Words words:[{<reword>} {<r>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <comment_for_reflog> more_env: [] words: [{<comment_for_reflog>} {<reword>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <mark_action_done> more_env: [] words: [{<mark_action_done>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <do_pick> more_env: [] words: [ {<do_pick>} {($ Id.VSub_DollarName sha1)} {(DQ ($ Id.VSub_DollarName rest))} ] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <git> more_env: [] words: [ {<git>} {<commit>} {<--amend>} {<--no-post-rewrite>} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name gpg_sign_opt> var_name: gpg_sign_opt suffix_op: (suffix_op.Unary op: <Id.VTest_ColonPlus _> arg_word: {(DQ ($ Id.VSub_DollarName gpg_sign_opt))} ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <warn> more_env: [] words: [ {<warn>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <eval_gettext> more_env: [] words: [ {<eval_gettext>} { (DQ < 'Could not amend commit after successfully picking ' > (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'sha1... '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'rest\n'> <'This is most likely due to an empty commit message, or the pre-commit hook\n'> < 'failed. If the pre-commit hook failed, you may need to resolve the issue before\n' > <'you are able to reword the commit.'> ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <exit_with_patch> more_env: [] words: [{<exit_with_patch>} {($ Id.VSub_DollarName sha1)} {<1>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <record_in_rewritten> more_env: [] words: [{<record_in_rewritten>} {($ Id.VSub_DollarName sha1)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <edit> pattern: (pat.Words words:[{<edit>} {<e>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <comment_for_reflog> more_env: [] words: [{<comment_for_reflog>} {<edit>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <mark_action_done> more_env: [] words: [{<mark_action_done>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <do_pick> more_env: [] words: [ {<do_pick>} {($ Id.VSub_DollarName sha1)} {(DQ ($ Id.VSub_DollarName rest))} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'sha1_abbrev='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sha1_abbrev='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'sha1_abbrev='> name: sha1_abbrev ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <git> more_env: [] words: [ {<git>} {<rev-parse>} {<--short>} {($ Id.VSub_DollarName sha1)} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.Simple blame_tok: <warn> more_env: [] words: [ {<warn>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <eval_gettext> more_env: [] words: [ {<eval_gettext>} { (DQ <'Stopped at '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'sha1_abbrev... '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <rest> ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <exit_with_patch> more_env: [] words: [{<exit_with_patch>} {($ Id.VSub_DollarName sha1)} {<0>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <squash> pattern: (pat.Words words:[{<squash>} {<s>} {<fixup>} {<f>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName command))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <squash> pattern: (pat.Words words:[{<squash>} {<s>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'squash_style='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'squash_style='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'squash_style='> name: squash_style ) op: assign_op.Equal rhs: {<squash>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <fixup> pattern: (pat.Words words:[{<fixup>} {<f>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'squash_style='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'squash_style='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'squash_style='> name: squash_style ) op: assign_op.Equal rhs: {<fixup>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <comment_for_reflog> more_env: [] words: [{<comment_for_reflog>} {($ Id.VSub_DollarName squash_style)}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-f>} {(DQ ($ Id.VSub_DollarName done))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <has_action> more_env: [] words: [{<has_action>} {(DQ ($ Id.VSub_DollarName done))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <die> more_env: [] words: [ {<die>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <eval_gettext> more_env: [] words: [ {<eval_gettext>} { (DQ <'Cannot \''> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'squash_style\' without a previous commit'> ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _> <Id.Op_DPipe _>] ) (command.Simple blame_tok: <mark_action_done> more_env: [] words: [{<mark_action_done>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <update_squash_messages> more_env: [] words: [ {<update_squash_messages>} {($ Id.VSub_DollarName squash_style)} {($ Id.VSub_DollarName sha1)} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'author_script_content='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'author_script_content='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'author_script_content='> name: author_script_content ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <get_author_ident_from_commit> more_env: [] words: [{<get_author_ident_from_commit>} {<HEAD>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ ($ Id.VSub_DollarName author_script_content))}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName author_script))} ) ] do_fork: T ) (command.Simple blame_tok: <eval> more_env: [] words: [{<eval>} {(DQ ($ Id.VSub_DollarName author_script_content))}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <pick_one> more_env: [] words: [{<pick_one>} {<-n>} {($ Id.VSub_DollarName sha1)}] redirects: [] do_fork: T ) ] ops: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <git> more_env: [] words: [{<git>} {<rev-parse>} {<--verify>} {<HEAD>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName amend))} ) ] do_fork: T ) (command.Simple blame_tok: <die_failed_squash> more_env: [] words: [ {<die_failed_squash>} {($ Id.VSub_DollarName sha1)} {(DQ ($ Id.VSub_DollarName rest))} ] redirects: [] do_fork: T ) ] spids: [3852 3863] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <peek_next_command> more_env: [] words: [{<peek_next_command>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <squash> pattern: (pat.Words words:[{<squash>} {<s>} {<fixup>} {<f>}]) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.Simple blame_tok: <do_with_author> more_env: [] words: [ {<do_with_author>} {<output>} {<git>} {<commit>} {<--amend>} {<--no-verify>} {<-F>} {(DQ ($ Id.VSub_DollarName squash_msg))} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name gpg_sign_opt> var_name: gpg_sign_opt suffix_op: (suffix_op.Unary op: <Id.VTest_ColonPlus _> arg_word: {(DQ ($ Id.VSub_DollarName gpg_sign_opt))} ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <die_failed_squash> more_env: [] words: [ {<die_failed_squash>} {($ Id.VSub_DollarName sha1)} {(DQ ($ Id.VSub_DollarName rest))} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-f>} {(DQ ($ Id.VSub_DollarName fixup_msg))}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.AndOr children: [ (command.Simple blame_tok: <do_with_author> more_env: [] words: [ {<do_with_author>} {<git>} {<commit>} {<--amend>} {<--no-verify>} {<-F>} {(DQ ($ Id.VSub_DollarName fixup_msg))} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name gpg_sign_opt> var_name: gpg_sign_opt suffix_op: (suffix_op.Unary op: <Id.VTest_ColonPlus _> arg_word: {(DQ ($ Id.VSub_DollarName gpg_sign_opt))} ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <die_failed_squash> more_env: [] words: [ {<die_failed_squash>} {($ Id.VSub_DollarName sha1)} {(DQ ($ Id.VSub_DollarName rest))} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] spids: [3972 3983] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.AndOr children: [ (command.Simple blame_tok: <cp> more_env: [] words: [ {<cp>} {(DQ ($ Id.VSub_DollarName squash_msg))} {(DQ ($ Id.VSub_DollarName GIT_DIR)) <'/SQUASH_MSG'>} ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <rm> more_env: [] words: [ {<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName GIT_DIR)) <'/MERGE_MSG'>} ] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <do_with_author> more_env: [] words: [ {<do_with_author>} {<git>} {<commit>} {<--amend>} {<--no-verify>} {<-F>} {(DQ ($ Id.VSub_DollarName GIT_DIR)) <'/SQUASH_MSG'>} {<-e>} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name gpg_sign_opt> var_name: gpg_sign_opt suffix_op: (suffix_op.Unary op: <Id.VTest_ColonPlus _> arg_word: {(DQ ($ Id.VSub_DollarName gpg_sign_opt))} ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <die_failed_squash> more_env: [] words: [ {<die_failed_squash>} {($ Id.VSub_DollarName sha1)} {(DQ ($ Id.VSub_DollarName rest))} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <rm> more_env: [] words: [ {<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName squash_msg))} {(DQ ($ Id.VSub_DollarName fixup_msg))} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <record_in_rewritten> more_env: [] words: [{<record_in_rewritten>} {($ Id.VSub_DollarName sha1)}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <x> pattern: (pat.Words words:[{<x>} {(DQ <exec>)}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<-r>} {<command>} {<rest>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName todo))} ) ] do_fork: T ) (command.Simple blame_tok: <mark_action_done> more_env: [] words: [{<mark_action_done>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <eval_gettextln> more_env: [] words: [ {<eval_gettextln>} { (DQ <'Executing: '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <rest> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.Left_DoubleQuote '"'> more_env: [] words: [ { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name SHELL> var_name: SHELL suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {<'@SHELL_PATH@'>} ) right: <Id.Right_DollarBrace '}'> ) ) } {<-c>} {(DQ ($ Id.VSub_DollarName rest))} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'status='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'status='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'status='> name:status) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'dirty='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'dirty='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dirty='> name:dirty) op: assign_op.Equal rhs: {<f>} ) ] redirects: [] ) (command.AndOr children: [ (command.Subshell left: <Id.Op_LParen _> child: (command.Simple blame_tok: <require_clean_work_tree> more_env: [] words: [{<require_clean_work_tree>} {(DQ <rebase>)}] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) right: <Id.Right_Subshell _> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'dirty='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'dirty='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dirty='> name:dirty) op: assign_op.Equal rhs: {<t>} ) ] redirects: [] ) ] ops: [<Id.Op_DPipe _>] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {(DQ ($ Id.VSub_DollarName status))} {<-ne>} {<0>}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <warn> more_env: [] words: [ {<warn>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <eval_gettext> more_env: [] words: [ {<eval_gettext>} { (DQ <'Execution failed: '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <rest> ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {(DQ ($ Id.VSub_DollarName dirty))} {<Id.Lit_Equals '='>} {<f>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <warn> more_env: [] words: [ {<warn>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <gettext> more_env: [] words: [ {<gettext>} { (DQ < 'and made changes to the index and/or the working tree' > ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <warn> more_env: [] words: [ {<warn>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <gettext> more_env: [] words: [ {<gettext>} { (DQ <'You can fix the problem, and then run\n'> <'\n'> <'\tgit rebase --continue'> ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <warn> more_env: [] words: [{<warn>}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {($ Id.VSub_DollarName status)} {<-eq>} {<127>} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'status='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'status='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'status='> name: status ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] spids: [4283 4297] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {(DQ ($ Id.VSub_DollarName status))} ) ] spids: [4206 4219] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {(DQ ($ Id.VSub_DollarName dirty))} {<Id.Lit_Equals '='>} {<t>} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <warn> more_env: [] words: [ {<warn>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <eval_gettext> more_env: [] words: [ {<eval_gettext>} { (DQ <'Execution succeeded: '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'rest\n'> <'but left changes to the index and/or the working tree\n'> <'Commit or stash your changes, and then run\n'> <'\n'> <'\tgit rebase --continue'> ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <warn> more_env: [] words: [{<warn>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [4314 4327] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <warn> more_env: [] words: [ {<warn>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <eval_gettext> more_env: [] words: [ {<eval_gettext>} { (DQ <'Unknown command: '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'command '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'sha1 '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <rest> ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'fixtodo='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'fixtodo='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'fixtodo='> name:fixtodo) op: assign_op.Equal rhs: { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <gettext> more_env: [] words: [ {<gettext>} {(DQ <'Please fix this using \'git rebase --edit-todo\'.'>)} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <git> more_env: [] words: [ {<git>} {<rev-parse>} {<--verify>} {<-q>} {(DQ ($ Id.VSub_DollarName sha1))} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <die_with_patch> more_env: [] words: [ {<die_with_patch>} {($ Id.VSub_DollarName sha1)} {(DQ ($ Id.VSub_DollarName fixtodo))} ] redirects: [] do_fork: T ) ] spids: [4403 4421] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <die> more_env: [] words: [{<die>} {(DQ ($ Id.VSub_DollarName fixtodo))}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-s>} {(DQ ($ Id.VSub_DollarName todo))}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Return return>) ] ops: [<Id.Op_DAmp _>] ) (command.AndOr children: [ (command.Simple blame_tok: <comment_for_reflog> more_env: [] words: [{<comment_for_reflog>} {<finish>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'newhead='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'newhead='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'newhead='> name:newhead) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <git> more_env: [] words: [{<git>} {<rev-parse>} {<HEAD>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName head_name)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <'refs/'> pattern: (pat.Words words:[{<'refs/'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.ShAssignment left: <Id.Lit_VarLike 'message='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'message='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'message='> name: message ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName GIT_REFLOG_ACTION) <': '> ($ Id.VSub_DollarName head_name) <' onto '> ($ Id.VSub_DollarName onto) ) } ) ] redirects: [] ) (command.Simple blame_tok: <git> more_env: [] words: [ {<git>} {<update-ref>} {<-m>} {(DQ ($ Id.VSub_DollarName message))} {($ Id.VSub_DollarName head_name)} {($ Id.VSub_DollarName newhead)} {($ Id.VSub_DollarName orig_head)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <git> more_env: [] words: [ {<git>} {<symbolic-ref>} {<-m>} { (DQ ($ Id.VSub_DollarName GIT_REFLOG_ACTION) <': returning to '> ($ Id.VSub_DollarName head_name) ) } {<HEAD>} {($ Id.VSub_DollarName head_name)} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<Id.KW_Bang '!'>} {<-f>} {(DQ ($ Id.VSub_DollarName state_dir)) <'/verbose'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <git> more_env: [] words: [ {<git>} {<diff-tree>} {<--stat>} {($ Id.VSub_DollarName orig_head) <..HEAD>} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-s>} {(DQ ($ Id.VSub_DollarName rewritten_list))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <git> more_env: [] words: [ {<git>} {<notes>} {<copy>} {<--for-rewrite> <Id.Lit_Equals '='> <rebase>} ] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName rewritten_list))} ) ] do_fork: T ) (command.Simple blame_tok: <true> more_env: [] words: [{<true>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _> <Id.Op_DPipe _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) (command.ShAssignment left: <Id.Lit_VarLike 'hook='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'hook='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'hook='> name:hook) op: assign_op.Equal rhs: { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <git> more_env: [] words: [{<git>} {<rev-parse>} {<--git-path>} {<'hooks/post-rewrite'>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ) ] redirects: [] ) ] ops: [<Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _>] ) (command.AndOr children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-x>} {(DQ ($ Id.VSub_DollarName hook))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-s>} {(DQ ($ Id.VSub_DollarName rewritten_list))} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <Id.Left_DoubleQuote '"'> more_env: [] words: [{(DQ ($ Id.VSub_DollarName hook))} {<rebase>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName rewritten_list))} ) ] do_fork: T ) (command.Simple blame_tok: <true> more_env: [] words: [{<true>}] redirects: [] do_fork: T ) ] spids: [4646 4667] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <warn> more_env: [] words: [ {<warn>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <eval_gettext> more_env: [] words: [ {<eval_gettext>} { (DQ <'Successfully rebased and updated '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <head_name.> ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <do_rest> name: do_rest body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.AndOr children: [ (command.Simple blame_tok: <do_next> more_env: [] words: [{<do_next>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <skip_unnecessary_picks> name: skip_unnecessary_picks body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'fd='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'fd='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'fd='> name:fd) op: assign_op.Equal rhs: {<3>} ) ] redirects: [] ) (command.AndOr children: [ (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<-r>} {<command>} {<rest>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {(DQ ($ Id.VSub_DollarName fd) <','> ($ Id.VSub_DollarName command))} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <3> pattern: (pat.Words words: [{<3> <Id.Lit_Comma ','> <pick>} {<3> <Id.Lit_Comma ','> <p>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'sha1='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sha1='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sha1='> name:sha1) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name rest> var_name: rest suffix_op: (suffix_op.Unary op: <Id.VOp1_DPercent '%%'> arg_word: {<' '> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <git> more_env: [] words: [ {<git>} {<rev-parse>} {<--verify>} {<--quiet>} {(DQ ($ Id.VSub_DollarName sha1)) <Id.Lit_Other '^'> } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words: [{(DQ ($ Id.VSub_DollarName onto)) <Id.Lit_Star '*'>}] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'onto='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'onto='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'onto='> name: onto ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName sha1)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'fd='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'fd='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'fd='> name: fd ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <3> pattern: (pat.Words words: [ {<3> <Id.Lit_Comma ','> (DQ ($ Id.VSub_DollarName comment_char)) <Id.Lit_Star '*'> } {<3> <Id.Lit_Comma ','>} ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'fd='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'fd='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'fd='> name:fd) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <printf> more_env: [] words: [ {<printf>} {(SQ <'%s\\n'>)} { (DQ ($ Id.VSub_DollarName command) (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name rest> var_name: rest suffix_op: (suffix_op.Unary op: <Id.VTest_ColonPlus _> arg_word: {<' '>} ) right: <Id.Right_DollarBrace '}'> ) ($ Id.VSub_DollarName rest) ) } ] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName fd)} ) ] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName todo))} ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName todo) <.new>)} ) (Redir op: <Id.Redir_DGreat '3>>'> loc: (redir_loc.Fd fd:3) arg: {(DQ ($ Id.VSub_DollarName done))} ) ] ) (command.Simple blame_tok: <mv> more_env: [] words: [ {<mv>} {<-f>} {(DQ ($ Id.VSub_DollarName todo)) <.new>} {(DQ ($ Id.VSub_DollarName todo))} ] redirects: [] do_fork: T ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <peek_next_command> more_env: [] words: [{<peek_next_command>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <squash> pattern: (pat.Words words:[{<squash>} {<s>} {<fixup>} {<f>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <record_in_rewritten> more_env: [] words: [{<record_in_rewritten>} {(DQ ($ Id.VSub_DollarName onto))}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <die> more_env: [] words: [ {<die>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <gettext> more_env: [] words: [{<gettext>} {(DQ <'Could not skip unnecessary pick commands'>)}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DPipe _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <transform_todo_ids> name: transform_todo_ids body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr children: [ (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<-r>} {<command>} {<rest>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName command))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words: [ {(DQ ($ Id.VSub_DollarName comment_char)) <Id.Lit_Star '*'>} {<exec>} ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.ShAssignment left: <Id.Lit_VarLike 'sha1='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sha1='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'sha1='> name: sha1 ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <git> more_env: [] words: [ {<git>} {<rev-parse>} {<--verify>} {<--quiet>} {(DQ ($ Id.VSub_At '@'))} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name rest> var_name: rest suffix_op: (suffix_op.Unary op: <Id.VOp1_DPercent '%%'> arg_word: {<'[\t ]'> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'rest='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'rest='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'rest='> name: rest ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName sha1) <' '> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name rest> var_name: rest suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<Id.Lit_Other '*'> <'[\t ]'>} ) right: <Id.Right_DollarBrace '}'> ) ) } ) ] redirects: [] ) ] ops: [<Id.Op_DAmp _>] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <printf> more_env: [] words: [ {<printf>} {(SQ <'%s\\n'>)} { (DQ ($ Id.VSub_DollarName command) (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name rest> var_name: rest suffix_op: (suffix_op.Unary op: <Id.VTest_ColonPlus _> arg_word: {<' '>} ) right: <Id.Right_DollarBrace '}'> ) ($ Id.VSub_DollarName rest) ) } ] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName todo))} ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName todo) <.new>)} ) ] ) (command.Simple blame_tok: <mv> more_env: [] words: [ {<mv>} {<-f>} {(DQ ($ Id.VSub_DollarName todo) <.new>)} {(DQ ($ Id.VSub_DollarName todo))} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <expand_todo_ids> name: expand_todo_ids body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <transform_todo_ids> more_env: [] words: [{<transform_todo_ids>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <collapse_todo_ids> name: collapse_todo_ids body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple blame_tok: <transform_todo_ids> more_env: [] words: [{<transform_todo_ids>} {<--short>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <rearrange_squash> name: rearrange_squash body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<-r>} {<pick>} {<sha1>} {<message>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-z>} {(DQ (${ Id.VSub_Name format))}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'message='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'message='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'message='> name:message) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <git> more_env: [] words: [ {<git>} {<log>} {<-n>} {<1>} {<--format> <Id.Lit_Equals '='> (DQ <'%s'>)} {(${ Id.VSub_Name sha1)} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) ] ops: [<Id.Op_DPipe _>] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName message))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words: [ {(DQ <'squash! '>) <Id.Lit_Star '*'>} {(DQ <'fixup! '>) <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'action='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'action='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'action='> name:action) op: assign_op.Equal rhs: { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name message> var_name: message suffix_op: (suffix_op.Unary op: <Id.VOp1_DPercent '%%'> arg_word: {<Id.Lit_Other '!'> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'rest='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'rest='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rest='> name:rest) op: assign_op.Equal rhs: {($ Id.VSub_DollarName message)} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'prefix='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'prefix='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'prefix='> name:prefix) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName rest))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words: [ {(DQ <'squash! '>) <Id.Lit_Star '*'>} {(DQ <'fixup! '>) <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'prefix='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'prefix='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'prefix='> name: prefix ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName prefix) (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name rest> var_name: rest suffix_op: (suffix_op.Unary op: <Id.VOp1_DPercent '%%'> arg_word: {<Id.Lit_Other '!'> <Id.Lit_Other '*'> } ) right: <Id.Right_DollarBrace '}'> ) <','> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'rest='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'rest='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'rest='> name: rest ) op: assign_op.Equal rhs: { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name rest> var_name: rest suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<Id.Lit_Other '*'> <Id.Lit_Other '!'> <' '> } ) right: <Id.Right_DollarBrace '}'> ) ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Break break> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <printf> more_env: [] words: [ {<printf>} {(SQ <'%s %s %s %s\\n'>)} {(DQ ($ Id.VSub_DollarName sha1))} {(DQ ($ Id.VSub_DollarName action))} {(DQ ($ Id.VSub_DollarName prefix))} {(DQ ($ Id.VSub_DollarName rest))} ] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name rest> var_name: rest suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<Id.Lit_Other '*'> <' '>} ) right: <Id.Right_DollarBrace '}'> ) ) } {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName rest))} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'fullsha='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'fullsha='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'fullsha='> name: fullsha ) op: assign_op.Equal rhs: { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <git> more_env: [] words: [ {<git>} {<rev-parse>} {<-q>} {<--verify>} {(DQ ($ Id.VSub_DollarName rest))} ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName fullsha))} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName sha1) <' +'> ($ Id.VSub_DollarName action) <' '> ($ Id.VSub_DollarName prefix) <' '> ($ Id.VSub_DollarName fullsha) ) } ] redirects: [] do_fork: T ) ] spids: [5469 5480] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [5425 5445] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_Number 1) <.sq>)} ) (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_Number 1))} ) ] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-s>} {(DQ ($ Id.VSub_Number 1) <.sq>)}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Return return>) ] ops: [<Id.Op_DPipe _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'used='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'used='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'used='> name:used) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<-r>} {<pick>} {<sha1>} {<message>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ <' '> ($ Id.VSub_DollarName used))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName sha1) <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [(command.ControlFlow keyword:<Id.ControlFlow_Continue continue>)] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <printf> more_env: [] words: [ {<printf>} {(SQ <'%s\\n'>)} { (DQ ($ Id.VSub_DollarName pick) <' '> ($ Id.VSub_DollarName sha1) <' '> ($ Id.VSub_DollarName message) ) } ] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-z>} {(DQ (${ Id.VSub_Name format))}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'message='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'message='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'message='> name:message) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <git> more_env: [] words: [ {<git>} {<log>} {<-n>} {<1>} {<--format> <Id.Lit_Equals '='> (DQ <'%s'>)} {(${ Id.VSub_Name sha1)} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) ] ops: [<Id.Op_DPipe _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'used='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'used='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'used='> name:used) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName used) ($ Id.VSub_DollarName sha1) <' '>)} ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<-r>} {<squash>} {<action>} {<msg_prefix>} {<msg_content>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ <' '> ($ Id.VSub_DollarName used))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName squash) <' '>) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ControlFlow keyword: <Id.ControlFlow_Continue continue> ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'emit='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'emit='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'emit='> name:emit) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName action))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Lit_Other '+'> pattern: (pat.Words words:[{<Id.Lit_Other '+'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'action='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'action='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'action='> name: action ) op: assign_op.Equal rhs: { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name action> var_name: action suffix_op: (suffix_op.Unary op: <Id.VOp1_Pound '#'> arg_word: {<Id.Lit_Other '+'>} ) right: <Id.Right_DollarBrace '}'> ) ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: {(DQ ($ Id.VSub_DollarName msg_content))} ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words: [ {(DQ ($ Id.VSub_DollarName sha1)) <Id.Lit_Star '*'>} ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'emit='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'emit='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'emit='> name: emit ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName message))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words: [ {(DQ ($ Id.VSub_DollarName msg_content)) <Id.Lit_Star '*'> } ] ) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'emit='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'emit='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'emit='> name: emit ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {($ Id.VSub_DollarName emit)} {<Id.Lit_Equals '='>} {<1>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-n>} {(DQ (${ Id.VSub_Name format))}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'msg_content='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'msg_content='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'msg_content='> name: msg_content ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <git> more_env: [] words: [ {<git>} {<log>} {<-n>} {<1>} {<--format> <Id.Lit_Equals '='> (DQ (${ Id.VSub_Name format)) } {(${ Id.VSub_Name squash)} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) ] spids: [5793 5806] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'msg_content='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'msg_content='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'msg_content='> name: msg_content ) op: assign_op.Equal rhs: { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ ($ Id.VSub_DollarName msg_prefix) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {(DQ <'s/,/! /g'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Eof_RParen _> ) ($ Id.VSub_DollarName msg_content) ) } ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <printf> more_env: [] words: [ {<printf>} {(SQ <'%s\\n'>)} { (DQ ($ Id.VSub_DollarName action) <' '> ($ Id.VSub_DollarName squash) <' '> ($ Id.VSub_DollarName msg_content) ) } ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'used='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'used='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'used='> name: used ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName used) ($ Id.VSub_DollarName squash) <' '> ) } ) ] redirects: [] ) ] spids: [5779 5790] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_Number 1) <.sq>)} ) ] ) ] right: <Id.KW_Done done> ) redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_Number 1) <.rearranged>)} ) (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_Number 1))} ) ] ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {(DQ ($ Id.VSub_Number 1) <.rearranged>)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_Number 1))} ) ] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [ {<rm>} {<-f>} {(DQ ($ Id.VSub_Number 1) <.sq>)} {(DQ ($ Id.VSub_Number 1) <.rearranged>)} ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <add_exec_commands> name: add_exec_commands body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr children: [ (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'first='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'first='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'first='> name:first) op: assign_op.Equal rhs: {<t>} ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<-r>} {<insn>} {<rest>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName insn)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <pick> pattern: (pat.Words words:[{<pick>}]) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName first))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <printf> more_env: [] words: [ {<printf>} {(DQ <'%s'>)} {(DQ ($ Id.VSub_DollarName cmd))} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <printf> more_env: [] words: [ {<printf>} {(DQ <'%s %s'> <Id.Lit_BadBackslash '\\'> <n>)} {(DQ ($ Id.VSub_DollarName insn))} {(DQ ($ Id.VSub_DollarName rest))} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'first='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'first='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'first='> name:first) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <printf> more_env: [] words: [{<printf>} {(DQ <'%s'>)} {(DQ ($ Id.VSub_DollarName cmd))}] redirects: [] do_fork: T ) ] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_Number 1))} ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_Number 1) <.new>)} ) ] right: <Id.Lit_RBrace '}'> ) (command.Simple blame_tok: <mv> more_env: [] words: [{<mv>} {(DQ ($ Id.VSub_Number 1) <.new>)} {(DQ ($ Id.VSub_Number 1))}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <check_commit_sha> name: check_commit_sha body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'badsha='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'badsha='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'badsha='> name:badsha) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-z>} {(DQ ($ Id.VSub_Number 1))}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'badsha='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'badsha='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'badsha='> name:badsha) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] spids: [6104 6115] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'sha1_verif='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sha1_verif='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sha1_verif='> name:sha1_verif) op: assign_op.Equal rhs: { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <git> more_env: [] words: [ {<git>} {<rev-parse>} {<--verify>} {<--quiet>} {($ Id.VSub_Number 1) <Id.Lit_Other '^'> <Id.Lit_LBrace '{'> <commit> <Id.Lit_RBrace '}'> } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName sha1_verif))}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'badsha='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'badsha='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'badsha='> name:badsha) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] spids: [6145 6156] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {($ Id.VSub_DollarName badsha)} {<-ne>} {<0>}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'line='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'line='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'line='> name:line) op: assign_op.Equal rhs: { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-n>} {<-e>} {(DQ (${ Id.VSub_Number 2) <p>)} {(DQ ($ Id.VSub_Number 3))} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ) ] redirects: [] ) (command.Simple blame_tok: <warn> more_env: [] words: [ {<warn>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <eval_gettext> more_env: [] words: [ {<eval_gettext>} { (DQ < 'Warning: the SHA-1 is missing or isn\'t a commit in the following line:\n' > <' - '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <line> ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <warn> more_env: [] words: [{<warn>}] redirects: [] do_fork: T ) ] spids: [6170 6181] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_DollarName badsha)} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <check_bad_cmd_and_sha> name: check_bad_cmd_and_sha body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'retval='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'retval='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'retval='> name:retval) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'lineno='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'lineno='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'lineno='> name:lineno) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<-r>} {<command>} {<rest>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'lineno='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'lineno='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'lineno='> name:lineno) op: assign_op.Equal rhs: { (word_part.ArithSub left: <Id.Left_DollarDParen '$(('> anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName lineno)} right: {<Id.Lit_Digits 1>} ) right: <Id.Right_DollarDParen _> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName command)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words: [ {(DQ ($ Id.VSub_DollarName comment_char)) <Id.Lit_Star '*'>} {(SQ )} {<noop>} {<x>} {<exec>} ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words:[{(DQ ($ Id.VSub_DollarName cr))}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <pick> pattern: (pat.Words words: [ {<pick>} {<p>} {<drop>} {<d>} {<reword>} {<r>} {<edit>} {<e>} {<squash>} {<s>} {<fixup>} {<f>} ] ) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <check_commit_sha> more_env: [] words: [ {<check_commit_sha>} { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name rest> var_name: rest suffix_op: (suffix_op.Unary op: <Id.VOp1_DPercent '%%'> arg_word: {<'[ \t]'> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) ) } {(DQ ($ Id.VSub_DollarName lineno))} {(DQ ($ Id.VSub_Number 1))} ] redirects: [] do_fork: T ) ] ops: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'retval='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'retval='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'retval='> name: retval ) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] spids: [6360 6384] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'line='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'line='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'line='> name:line) op: assign_op.Equal rhs: { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-n>} {<-e>} {(DQ (${ Id.VSub_Name lineno) <p>)} {(DQ ($ Id.VSub_Number 1))} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ) ] redirects: [] ) (command.Simple blame_tok: <warn> more_env: [] words: [ {<warn>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <eval_gettext> more_env: [] words: [ {<eval_gettext>} { (DQ < 'Warning: the command isn\'t recognized in the following line:\n' > <' - '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <line> ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <warn> more_env: [] words: [{<warn>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'retval='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'retval='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'retval='> name:retval) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_Number 1))} ) ] ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_DollarName retval)} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <todo_list_to_sha_list> name: todo_list_to_sha_list body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Pipeline children: [ (command.Simple blame_tok: <git> more_env: [] words: [{<git>} {<stripspace>} {<--strip-comments>}] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<-r>} {<command>} {<sha1>} {<rest>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName command)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_DoubleQuote '"'> pattern: (pat.Words words: [ {(DQ ($ Id.VSub_DollarName comment_char)) <Id.Lit_Star '*'>} {(SQ )} {<noop>} {<x>} {(DQ <exec>)} ] ) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'long_sha='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'long_sha='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'long_sha='> name: long_sha ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <git> more_env: [] words: [ {<git>} {<rev-list>} {<--no-walk>} {(DQ ($ Id.VSub_DollarName sha1))} ] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.Simple blame_tok: <printf> more_env: [] words: [ {<printf>} {(DQ <'%s'> <Id.Lit_BadBackslash '\\'> <n>)} {(DQ ($ Id.VSub_DollarName long_sha))} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] ops: [<Id.Op_Pipe _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <warn_lines> name: warn_lines body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<-r>} {<line>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Simple blame_tok: <warn> more_env: [] words: [{<warn>} {(DQ <' - '> ($ Id.VSub_DollarName line))}] redirects: [] do_fork: T ) ] right: <Id.KW_Done done> ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <checkout_onto> name: checkout_onto body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'GIT_REFLOG_ACTION='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'GIT_REFLOG_ACTION='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'GIT_REFLOG_ACTION='> name: GIT_REFLOG_ACTION ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName GIT_REFLOG_ACTION) <': checkout '> ($ Id.VSub_DollarName onto_name) ) } ) ] redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <output> more_env: [] words: [{<output>} {<git>} {<checkout>} {($ Id.VSub_DollarName onto)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <die_abort> more_env: [] words: [ {<die_abort>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <gettext> more_env: [] words: [{<gettext>} {(DQ <'could not detach HEAD'>)}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <git> more_env: [] words: [{<git>} {<update-ref>} {<ORIG_HEAD>} {($ Id.VSub_DollarName orig_head)}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <get_missing_commit_check_level> name: get_missing_commit_check_level body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'check_level='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'check_level='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'check_level='> name:check_level) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <git> more_env: [] words: [{<git>} {<config>} {<--get>} {<rebase.missingCommitsCheck>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'check_level='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'check_level='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'check_level='> name:check_level) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name check_level> var_name: check_level suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{<ignore>}) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.Pipeline children: [ (command.Simple blame_tok: <printf> more_env: [] words: [{<printf>} {(SQ <'%s'>)} {(DQ ($ Id.VSub_DollarName check_level))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <tr> more_env: [] words: [{<tr>} {(SQ <A-Z>)} {(SQ <a-z>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <check_todo_list> name: check_todo_list body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'raise_error='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'raise_error='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'raise_error='> name:raise_error) op: assign_op.Equal rhs: {<f>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'check_level='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'check_level='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'check_level='> name:check_level) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <get_missing_commit_check_level> more_env: [] words: [{<get_missing_commit_check_level>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName check_level))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <warn> pattern: (pat.Words words:[{<warn>} {<error>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <todo_list_to_sha_list> more_env: [] words: [{<todo_list_to_sha_list>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName todo)) <.backup>} ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName todo)) <.oldsha1>} ) ] do_fork: T ) (command.Simple blame_tok: <todo_list_to_sha_list> more_env: [] words: [{<todo_list_to_sha_list>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName todo))} ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName todo)) <.newsha1>} ) ] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<-u>} {(DQ ($ Id.VSub_DollarName todo)) <.oldsha1>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName todo)) <.oldsha1> <Id.Lit_Other '+'>} ) ] do_fork: T ) (command.Simple blame_tok: <mv> more_env: [] words: [ {<mv>} {(DQ ($ Id.VSub_DollarName todo)) <.oldsha1> <Id.Lit_Other '+'>} {(DQ ($ Id.VSub_DollarName todo)) <.oldsha1>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<-u>} {(DQ ($ Id.VSub_DollarName todo)) <.newsha1>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName todo)) <.newsha1> <Id.Lit_Other '+'>} ) ] do_fork: T ) (command.Simple blame_tok: <mv> more_env: [] words: [ {<mv>} {(DQ ($ Id.VSub_DollarName todo)) <.newsha1> <Id.Lit_Other '+'>} {(DQ ($ Id.VSub_DollarName todo)) <.newsha1>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <comm> more_env: [] words: [ {<comm>} {<-2>} {<-3>} {(DQ ($ Id.VSub_DollarName todo)) <.oldsha1>} {(DQ ($ Id.VSub_DollarName todo)) <.newsha1>} ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName todo)) <.miss>} ) ] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-s>} {(DQ ($ Id.VSub_DollarName todo)) <.miss>}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {(DQ ($ Id.VSub_DollarName check_level))} {<Id.Lit_Equals '='>} {<error>} ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'raise_error='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'raise_error='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'raise_error='> name: raise_error ) op: assign_op.Equal rhs: {<t>} ) ] redirects: [] ) ] ops: [<Id.Op_DAmp _>] ) (command.Simple blame_tok: <warn> more_env: [] words: [ {<warn>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <gettext> more_env: [] words: [ {<gettext>} { (DQ < 'Warning: some commits may have been dropped accidentally.\n' > <'Dropped commits (newer to older):'> ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'opt='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'opt='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'opt='> name:opt) op: assign_op.Equal rhs: { (DQ < '--no-walk=sorted --format=oneline --abbrev-commit --stdin' > ) } ) ] redirects: [] ) (command.Pipeline children: [ (command.Simple blame_tok: <git> more_env: [] words: [{<git>} {<rev-list>} {($ Id.VSub_DollarName opt)}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName todo)) <.miss>} ) ] do_fork: T ) (command.Simple blame_tok: <warn_lines> more_env: [] words: [{<warn_lines>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.Simple blame_tok: <warn> more_env: [] words: [ {<warn>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <gettext> more_env: [] words: [ {<gettext>} { (DQ <'To avoid this message, use '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) <drop> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <' to explicitly remove a commit.\n'> <'\n'> <'Use \'git config rebase.missingCommitsCheck\' to change the level of warnings.\n'> < 'The possible behaviours are: ignore, warn, error.' > ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <warn> more_env: [] words: [{<warn>}] redirects: [] do_fork: T ) ] spids: [6902 6914] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <ignore> pattern: (pat.Words words:[{<ignore>}]) middle: <Id.Right_CasePat _> action: [] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <warn> more_env: [] words: [ {<warn>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <eval_gettext> more_env: [] words: [ {<eval_gettext>} { (DQ <'Unrecognized setting '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'check_level for option rebase.missingCommitsCheck. Ignoring.'> ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <check_bad_cmd_and_sha> more_env: [] words: [{<check_bad_cmd_and_sha>} {(DQ ($ Id.VSub_DollarName todo))}] redirects: [] do_fork: T ) ] ops: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'raise_error='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'raise_error='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'raise_error='> name: raise_error ) op: assign_op.Equal rhs: {<t>} ) ] redirects: [] ) ] spids: [7041 7052] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {($ Id.VSub_DollarName raise_error)} {<Id.Lit_Equals '='>} {<t>} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <checkout_onto> more_env: [] words: [{<checkout_onto>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <warn> more_env: [] words: [ {<warn>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <gettext> more_env: [] words: [ {<gettext>} { (DQ < 'You can fix this with \'git rebase --edit-todo\' and then run \'git rebase --continue\'.' > ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <die> more_env: [] words: [ {<die>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <gettext> more_env: [] words: [ {<gettext>} { (DQ <'Or you can abort the rebase with \'git rebase --abort\'.'> ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) ] spids: [7063 7074] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <git_rebase__interactive> name: git_rebase__interactive body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName action))}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.ControlFlow_Continue continue> pattern: (pat.Words words:[{<Id.ControlFlow_Continue continue>}]) middle: <Id.Right_CasePat _> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <git> more_env: [] words: [{<git>} {<diff-index>} {<--cached>} {<--quiet>} {<HEAD>} {<-->}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<Id.KW_Bang '!'>} {<-f>} {(DQ ($ Id.VSub_DollarName GIT_DIR)) <'/CHERRY_PICK_HEAD'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [ {<rm>} {(DQ ($ Id.VSub_DollarName GIT_DIR)) <'/CHERRY_PICK_HEAD'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <die> more_env: [] words: [ {<die>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <gettext> more_env: [] words: [ {<gettext>} {(DQ <'Could not remove CHERRY_PICK_HEAD'>)} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _> <Id.Op_DPipe _>] ) ] spids: [7179 7194] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} {(DQ ($ Id.VSub_DollarName author_script))} ] redirects: [] do_fork: T ) ] ops: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'gpg_sign_opt_quoted='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'gpg_sign_opt_quoted='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'gpg_sign_opt_quoted='> name: gpg_sign_opt_quoted ) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name gpg_sign_opt> var_name: gpg_sign_opt suffix_op: (suffix_op.Unary op: <Id.VTest_ColonPlus _> arg_word: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <git> more_env: [] words: [ {<git>} {<rev-parse>} {<--sq-quote>} {(DQ ($ Id.VSub_DollarName gpg_sign_opt))} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.Simple blame_tok: <die> more_env: [] words: [ {<die>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <eval_gettext> more_env: [] words: [ {<eval_gettext>} { (DQ < 'You have staged changes in your working tree.\n' > <'If these changes are meant to be\n'> <'squashed into the previous commit, run:\n'> <'\n'> <' git commit --amend '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'gpg_sign_opt_quoted\n'> <'\n'> < 'If they are meant to go into a new commit, run:\n' > <'\n'> <' git commit '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'gpg_sign_opt_quoted\n'> <'\n'> <'In both cases, once you\'re done, continue with:\n'> <'\n'> <' git rebase --continue\n'> ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) ] spids: [7242 7255] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <.> more_env: [] words: [{<.>} {(DQ ($ Id.VSub_DollarName author_script))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <die> more_env: [] words: [ {<die>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <gettext> more_env: [] words: [ {<gettext>} { (DQ < 'Error trying to find the author identity to amend commit' > ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-f>} {(DQ ($ Id.VSub_DollarName amend))}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'current_head='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'current_head='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'current_head='> name: current_head ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <git> more_env: [] words: [{<git>} {<rev-parse>} {<--verify>} {<HEAD>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {(DQ ($ Id.VSub_DollarName current_head))} {<Id.Lit_Equals '='>} { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>} {(DQ ($ Id.VSub_DollarName amend))}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <die> more_env: [] words: [ {<die>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <gettext> more_env: [] words: [ {<gettext>} { (DQ < 'You have uncommitted changes in your working tree. Please commit them\n' > <'first and then run \'git rebase --continue\' again.'> ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <do_with_author> more_env: [] words: [ {<do_with_author>} {<git>} {<commit>} {<--amend>} {<--no-verify>} {<-F>} {(DQ ($ Id.VSub_DollarName msg))} {<-e>} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name gpg_sign_opt> var_name: gpg_sign_opt suffix_op: (suffix_op.Unary op: <Id.VTest_ColonPlus _> arg_word: {(DQ ($ Id.VSub_DollarName gpg_sign_opt))} ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <die> more_env: [] words: [ {<die>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <gettext> more_env: [] words: [ {<gettext>} {(DQ <'Could not commit staged changes.'>)} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] spids: [7331 7342] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.AndOr children: [ (command.Simple blame_tok: <do_with_author> more_env: [] words: [ {<do_with_author>} {<git>} {<commit>} {<--no-verify>} {<-F>} {(DQ ($ Id.VSub_DollarName msg))} {<-e>} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name gpg_sign_opt> var_name: gpg_sign_opt suffix_op: (suffix_op.Unary op: <Id.VTest_ColonPlus _> arg_word: {(DQ ($ Id.VSub_DollarName gpg_sign_opt))} ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <die> more_env: [] words: [ {<die>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <gettext> more_env: [] words: [ {<gettext>} {(DQ <'Could not commit staged changes.'>)} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-r>} {(DQ ($ Id.VSub_DollarName state_dir)) <'/stopped-sha'>} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <record_in_rewritten> more_env: [] words: [ {<record_in_rewritten>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <cat> more_env: [] words: [ {<cat>} {(DQ ($ Id.VSub_DollarName state_dir)) <'/stopped-sha'>} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) ] spids: [7487 7499] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <require_clean_work_tree> more_env: [] words: [{<require_clean_work_tree>} {(DQ <rebase>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <do_rest> more_env: [] words: [{<do_rest>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <skip> pattern: (pat.Words words:[{<skip>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <git> more_env: [] words: [{<git>} {<rerere>} {<clear>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <do_rest> more_env: [] words: [{<do_rest>}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <edit-todo> pattern: (pat.Words words:[{<edit-todo>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <git> more_env: [] words: [{<git>} {<stripspace>} {<--strip-comments>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName todo))} ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName todo)) <.new>} ) ] do_fork: T ) (command.Simple blame_tok: <mv> more_env: [] words: [ {<mv>} {<-f>} {(DQ ($ Id.VSub_DollarName todo)) <.new>} {(DQ ($ Id.VSub_DollarName todo))} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <collapse_todo_ids> more_env: [] words: [{<collapse_todo_ids>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <append_todo_help> more_env: [] words: [{<append_todo_help>}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <gettext> more_env: [] words: [ {<gettext>} { (DQ <'\n'> < 'You are editing the todo file of an ongoing interactive rebase.\n' > <'To continue rebase after editing, run:\n'> <' git rebase --continue\n'> <'\n'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <git> more_env: [] words: [{<git>} {<stripspace>} {<--comment-lines>}] redirects: [ (Redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName todo))} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <git_sequence_editor> more_env: [] words: [{<git_sequence_editor>} {(DQ ($ Id.VSub_DollarName todo))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <die> more_env: [] words: [ {<die>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <gettext> more_env: [] words: [{<gettext>} {(DQ <'Could not execute editor'>)}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <expand_todo_ids> more_env: [] words: [{<expand_todo_ids>}] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit>) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.Simple blame_tok: <comment_for_reflog> more_env: [] words: [{<comment_for_reflog>} {<start>}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<Id.KW_Bang '!'>} {<-z>} {(DQ ($ Id.VSub_DollarName switch_to))} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'GIT_REFLOG_ACTION='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'GIT_REFLOG_ACTION='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'GIT_REFLOG_ACTION='> name: GIT_REFLOG_ACTION ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName GIT_REFLOG_ACTION) <': checkout '> ($ Id.VSub_DollarName switch_to) ) } ) ] redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <output> more_env: [] words: [ {<output>} {<git>} {<checkout>} {(DQ ($ Id.VSub_DollarName switch_to))} {<-->} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <die> more_env: [] words: [ {<die>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <eval_gettext> more_env: [] words: [ {<eval_gettext>} { (DQ <'Could not checkout '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <switch_to> ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <comment_for_reflog> more_env: [] words: [{<comment_for_reflog>} {<start>}] redirects: [] do_fork: T ) ] spids: [7665 7677] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.AndOr children: [ (command.ShAssignment left: <Id.Lit_VarLike 'orig_head='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'orig_head='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'orig_head='> name:orig_head) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <git> more_env: [] words: [{<git>} {<rev-parse>} {<--verify>} {<HEAD>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.Simple blame_tok: <die> more_env: [] words: [ {<die>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <gettext> more_env: [] words: [{<gettext>} {(DQ <'No HEAD?'>)}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <mkdir> more_env: [] words: [{<mkdir>} {<-p>} {(DQ ($ Id.VSub_DollarName state_dir))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <die> more_env: [] words: [ {<die>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <eval_gettext> more_env: [] words: [ {<eval_gettext>} { (DQ <'Could not create temporary '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <state_dir> ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName state_dir)) <'/interactive'>} ) ] do_fork: T ) (command.Simple blame_tok: <die> more_env: [] words: [ {<die>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <gettext> more_env: [] words: [{<gettext>} {(DQ <'Could not mark as interactive'>)}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <write_basic_state> more_env: [] words: [{<write_basic_state>}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<t>} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName preserve_merges))} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName rebase_root))}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.AndOr children: [ (command.Simple blame_tok: <mkdir> more_env: [] words: [{<mkdir>} {(DQ ($ Id.VSub_DollarName rewritten))}] redirects: [] do_fork: T ) (command.ForEach keyword: <Id.KW_For for> iter_names: [c] iterable: (for_iter.Words words: [ { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <git> more_env: [] words: [ {<git>} {<merge-base>} {<--all>} {($ Id.VSub_DollarName orig_head)} {($ Id.VSub_DollarName upstream)} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.AndOr children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName onto)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName rewritten)) <'/'> ($ Id.VSub_DollarName c) } ) ] do_fork: T ) (command.Simple blame_tok: <die> more_env: [] words: [ {<die>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <gettext> more_env: [] words: [ {<gettext>} { (DQ <'Could not init rewritten commits'> ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] ops: [<Id.Op_DAmp _>] ) ] spids: [7816 7827] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.AndOr children: [ (command.Simple blame_tok: <mkdir> more_env: [] words: [{<mkdir>} {(DQ ($ Id.VSub_DollarName rewritten))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {($ Id.VSub_DollarName onto)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName rewritten)) <'/root'>} ) ] do_fork: T ) (command.Simple blame_tok: <die> more_env: [] words: [ {<die>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <gettext> more_env: [] words: [ {<gettext>} {(DQ <'Could not init rewritten commits'>)} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _> <Id.Op_DPipe _>] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'merges_option='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'merges_option='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'merges_option='> name: merges_option ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] spids: [7801 7813] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'merges_option='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'merges_option='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'merges_option='> name: merges_option ) op: assign_op.Equal rhs: {(DQ <'--no-merges --cherry-pick'>)} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'shorthead='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'shorthead='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'shorthead='> name:shorthead) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <git> more_env: [] words: [{<git>} {<rev-parse>} {<--short>} {($ Id.VSub_DollarName orig_head)}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'shortonto='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'shortonto='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'shortonto='> name:shortonto) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <git> more_env: [] words: [{<git>} {<rev-parse>} {<--short>} {($ Id.VSub_DollarName onto)}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName rebase_root))}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'shortupstream='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'shortupstream='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'shortupstream='> name: shortupstream ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <git> more_env: [] words: [ {<git>} {<rev-parse>} {<--short>} {($ Id.VSub_DollarName upstream)} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'revisions='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'revisions='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'revisions='> name:revisions) op: assign_op.Equal rhs: {($ Id.VSub_DollarName upstream) <Id.Lit_TDot ...> ($ Id.VSub_DollarName orig_head) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'shortrevisions='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'shortrevisions='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'shortrevisions='> name: shortrevisions ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName shortupstream) <..> ($ Id.VSub_DollarName shorthead) } ) ] redirects: [] ) ] spids: [7981 7995] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'revisions='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'revisions='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'revisions='> name:revisions) op: assign_op.Equal rhs: {($ Id.VSub_DollarName onto) <Id.Lit_TDot ...> ($ Id.VSub_DollarName orig_head) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'shortrevisions='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'shortrevisions='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'shortrevisions='> name: shortrevisions ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName shorthead)} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'format='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'format='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'format='> name:format) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <git> more_env: [] words: [{<git>} {<config>} {<--get>} {<rebase.instructionFormat>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.Pipeline children: [ (command.Simple blame_tok: <git> more_env: [] words: [ {<git>} {<rev-list>} {($ Id.VSub_DollarName merges_option)} {<--format> <Id.Lit_Equals '='> (DQ <'%m%H '> (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name format> var_name: format suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {<Id.Lit_Percent '%'> <s>} ) right: <Id.Right_DollarBrace '}'> ) ) } {<--reverse>} {<--left-right>} {<--topo-order>} {($ Id.VSub_DollarName revisions)} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name restrict_revision> var_name: restrict_revision suffix_op: (suffix_op.Unary op: <Id.VTest_Plus _> arg_word: {<'^'> ($ Id.VSub_DollarName restrict_revision)} ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {<-n>} {(DQ <'s/^>//p'>)}] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<-r>} {<sha1>} {<rest>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName keep_empty))} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <is_empty_commit> more_env: [] words: [{<is_empty_commit>} {($ Id.VSub_DollarName sha1)}] redirects: [] do_fork: T ) (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <is_merge_commit> more_env: [] words: [{<is_merge_commit>} {($ Id.VSub_DollarName sha1)}] redirects: [] do_fork: T ) ] ops: [] ) ] ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'comment_out='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'comment_out='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'comment_out='> name: comment_out ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName comment_char) <' '>)} ) ] redirects: [] ) ] spids: [8114 8139] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'comment_out='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'comment_out='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'comment_out='> name: comment_out ) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<t>} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName preserve_merges))} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <printf> more_env: [] words: [ {<printf>} {(SQ <'%s\\n'>)} { (DQ (${ Id.VSub_Name comment_out) <'pick '> ($ Id.VSub_DollarName sha1) <' '> ($ Id.VSub_DollarName rest) ) } ] redirects: [ (Redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName todo))} ) ] do_fork: T ) ] spids: [8159 8173] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName rebase_root))} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'preserve='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'preserve='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'preserve='> name: preserve ) op: assign_op.Equal rhs: {<t>} ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [p] iterable: (for_iter.Words words: [ { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (command.Simple blame_tok: <git> more_env: [] words: [ {<git>} {<rev-list>} {<--parents>} {<-1>} {($ Id.VSub_DollarName sha1)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-d> (SQ <' '>)} {<-s>} {<-f2->}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Eof_RParen _> ) } ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} {(DQ ($ Id.VSub_DollarName rewritten)) <'/'> ($ Id.VSub_DollarName p) } ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'preserve='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'preserve='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'preserve='> name: preserve ) op: assign_op.Equal rhs: {<f>} ) ] redirects: [] ) ] spids: [8254 8267] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] spids: [8201 8212] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'preserve='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'preserve='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'preserve='> name: preserve ) op: assign_op.Equal rhs: {<f>} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<f>} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName preserve))} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <touch> more_env: [] words: [ {<touch>} {(DQ ($ Id.VSub_DollarName rewritten)) <'/'> ($ Id.VSub_DollarName sha1) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <printf> more_env: [] words: [ {<printf>} {(SQ <'%s\\n'>)} { (DQ (${ Id.VSub_Name comment_out) <'pick '> ($ Id.VSub_DollarName sha1) <' '> ($ Id.VSub_DollarName rest) ) } ] redirects: [ (Redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName todo))} ) ] do_fork: T ) ] spids: [8290 8303] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<t>} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName preserve_merges))} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <mkdir> more_env: [] words: [{<mkdir>} {(DQ ($ Id.VSub_DollarName dropped))}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <git> more_env: [] words: [ {<git>} {<rev-list>} {($ Id.VSub_DollarName revisions)} {<--left-right>} {<--cherry-pick>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {<-n>} {(DQ <'s/^>//p'>)}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName state_dir)) <'/not-cherry-picks'>} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.Pipeline children: [ (command.Simple blame_tok: <git> more_env: [] words: [{<git>} {<rev-list>} {($ Id.VSub_DollarName revisions)}] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<rev>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {<-f>} {(DQ ($ Id.VSub_DollarName rewritten)) <'/'> ($ Id.VSub_DollarName rev) } ] redirects: [] do_fork: T ) (command.Pipeline negated: <Id.KW_Bang '!'> children: [ (command.Simple blame_tok: <sane_grep> more_env: [] words: [ {<sane_grep>} {(DQ ($ Id.VSub_DollarName rev))} {(DQ ($ Id.VSub_DollarName state_dir)) <'/not-cherry-picks'> } ] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) ] ops: [] ) ] ops: [<Id.Op_DAmp _>] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Pipeline children: [ (command.Simple blame_tok: <git> more_env: [] words: [ {<git>} {<rev-list>} {<--parents>} {<-1>} {($ Id.VSub_DollarName rev)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-d> (SQ <' '>)} {<-s>} {<-f2>}] redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName dropped)) <'/'> ($ Id.VSub_DollarName rev) } ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'sha1='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'sha1='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'sha1='> name: sha1 ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <git> more_env: [] words: [ {<git>} {<rev-list>} {<-1>} {($ Id.VSub_DollarName rev)} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.Sentence child: (command.Simple blame_tok: <sane_grep> more_env: [] words: [ {<sane_grep>} {<-v>} {(DQ <'^[a-z][a-z]* '> ($ Id.VSub_DollarName sha1))} ] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName todo))} ) (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ (${ Id.VSub_Name todo) <2>)} ) ] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <mv> more_env: [] words: [ {<mv>} {(DQ (${ Id.VSub_Name todo) <2>)} {(DQ ($ Id.VSub_DollarName todo))} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <rm> more_env: [] words: [ {<rm>} {(DQ ($ Id.VSub_DollarName rewritten)) <'/'> ($ Id.VSub_DollarName rev) } ] redirects: [] do_fork: T ) ] spids: [8431 8463] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] ops: [<Id.Op_Pipe _>] ) ] spids: [8348 8360] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-s>} {(DQ ($ Id.VSub_DollarName todo))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<noop>}] redirects: [ (Redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName todo))} ) ] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName autosquash))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <rearrange_squash> more_env: [] words: [{<rearrange_squash>} {(DQ ($ Id.VSub_DollarName todo))}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName cmd))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <add_exec_commands> more_env: [] words: [{<add_exec_commands>} {(DQ ($ Id.VSub_DollarName todo))}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'todocount='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'todocount='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'todocount='> name:todocount) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (command.Simple blame_tok: <git> more_env: [] words: [{<git>} {<stripspace>} {<--strip-comments>}] redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName todo))} ) ] do_fork: T ) (command.Simple blame_tok: <wc> more_env: [] words: [{<wc>} {<-l>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'todocount='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'todocount='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'todocount='> name:todocount) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name todocount> var_name: todocount suffix_op: (suffix_op.Unary op: <Id.VOp1_DPound '##'> arg_word: {<Id.Lit_Other '*'> <' '>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.Simple blame_tok: <cat> more_env: [] words: [{<cat>}] redirects: [ (Redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName todo))} ) (Redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_tok: <Id.Undefined_Tok ''> stdin_parts: [ <'\n'> ($ Id.VSub_DollarName comment_char) <' '> (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <eval_ngettext> more_env: [] words: [ {<eval_ngettext>} { (DQ <'Rebase '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'shortrevisions onto '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'shortonto ('> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'todocount command)'> ) } { (DQ <'Rebase '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'shortrevisions onto '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'shortonto ('> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'todocount commands)'> ) } {(DQ ($ Id.VSub_DollarName todocount))} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) <'\n'> ] ) ) ] do_fork: T ) (command.Simple blame_tok: <append_todo_help> more_env: [] words: [{<append_todo_help>}] redirects: [] do_fork: T ) (command.Pipeline children: [ (command.Simple blame_tok: <gettext> more_env: [] words: [ {<gettext>} { (DQ <'\n'> <'However, if you remove everything, the rebase will be aborted.\n'> <'\n'> ) } ] redirects: [] do_fork: T ) (command.Simple blame_tok: <git> more_env: [] words: [{<git>} {<stripspace>} {<--comment-lines>}] redirects: [ (Redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName todo))} ) ] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName keep_empty))}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <printf> more_env: [] words: [ {<printf>} {(SQ <'%s\\n'>)} { (DQ ($ Id.VSub_DollarName comment_char) <' '> (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <gettext> more_env: [] words: [ {<gettext>} {(DQ <'Note that empty commits are commented out'>)} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [ (Redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName todo))} ) ] do_fork: T ) ] spids: [8737 8747] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <has_action> more_env: [] words: [{<has_action>} {(DQ ($ Id.VSub_DollarName todo))}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<2>} ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <cp> more_env: [] words: [ {<cp>} {(DQ ($ Id.VSub_DollarName todo))} {(DQ ($ Id.VSub_DollarName todo)) <.backup>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <collapse_todo_ids> more_env: [] words: [{<collapse_todo_ids>}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <git_sequence_editor> more_env: [] words: [{<git_sequence_editor>} {(DQ ($ Id.VSub_DollarName todo))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <die_abort> more_env: [] words: [ {<die_abort>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <gettext> more_env: [] words: [{<gettext>} {(DQ <'Could not execute editor'>)}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.Simple blame_tok: <has_action> more_env: [] words: [{<has_action>} {(DQ ($ Id.VSub_DollarName todo))}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Return return> arg_word: {<2>} ) ] ops: [<Id.Op_DPipe _>] ) (command.Simple blame_tok: <check_todo_list> more_env: [] words: [{<check_todo_list>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <expand_todo_ids> more_env: [] words: [{<expand_todo_ids>}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-d>} {(DQ ($ Id.VSub_DollarName rewritten))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName force_rebase))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <skip_unnecessary_picks> more_env: [] words: [{<skip_unnecessary_picks>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DPipe _> <Id.Op_DPipe _>] ) (command.Simple blame_tok: <checkout_onto> more_env: [] words: [{<checkout_onto>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <do_rest> more_env: [] words: [{<do_rest>}] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <git_rebase__interactive> more_env: [] words: [{<git_rebase__interactive>}] redirects: [] do_fork: T ) ] )