(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:todo) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$state_dir')) <'/git-rebase-todo'>} spids: [39] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:done) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$state_dir')) <'/done'>} spids: [55] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:msg) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$state_dir')) <'/message'>} spids: [68] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:squash_msg) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$state_dir')) <'/message-squash'>} spids: [114] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fixup_msg) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$state_dir')) <'/message-fixup'>} spids: [136] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:rewritten) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$state_dir')) <'/rewritten'>} spids: [161] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:dropped) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$state_dir')) <'/dropped'>} spids: [168] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:end) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$state_dir')) <'/end'>} spids: [175] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:msgnum) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$state_dir')) <'/msgnum'>} spids: [181] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:author_script) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$state_dir')) <'/author-script'>} spids: [197] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:amend) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$state_dir')) <'/amend'>} spids: [222] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:rewritten_list) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$state_dir')) <'/rewritten-list'>} spids: [241] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:rewritten_pending) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$state_dir')) <'/rewritten-pending'>} spids: [247] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:cr) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<printf>} {(DQ <Id.Lit_BadBackslash '\\'> <015>)}) ) } spids: [260] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:strategy_args) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name strategy> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonPlus ':+'> arg_word: {<'--strategy='> ($ Id.VSub_DollarName '$strategy')} ) ) } spids: [271] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$strategy_opts'))}) (C {<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'> ) } ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:GIT_CHERRY_PICK_HELP) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$resolvemsg'))} spids: [306] ) ] ) (C {<export>} {<GIT_CHERRY_PICK_HELP>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:comment_char) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (command.Simple 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 ) (C {<cut>} {<-c1>}) ] negated: F ) ) } spids: [316] ) ] ) (C {<Id.Lit_Colon ':'>} { (braced_var_sub token: <Id.VSub_Name comment_char> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonEquals ':='> arg_word:{<Id.Lit_Pound '#'>}) ) } ) (command.ShFunction name: warn body: (BraceGroup children: [ (command.Simple 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 ) ] ) ) (command.ShFunction name: commit_message body: (BraceGroup children: [ (command.Pipeline children: [ (C {<git>} {<cat-file>} {<commit>} {(DQ ($ Id.VSub_Number '$1'))}) (C {<sed>} {(DQ <'1,/^'> <Id.Lit_Dollar '$'> <'/d'>)}) ] negated: F ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:orig_reflog_action) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$GIT_REFLOG_ACTION'))} spids: [403] ) ] ) (command.ShFunction name: comment_for_reflog body: (BraceGroup children: [ (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$orig_reflog_action'))} arms: [ (case_arm pat_list: [{(SQ )} {<rebase> <Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:GIT_REFLOG_ACTION) op: assign_op.Equal rhs: {(DQ <'rebase -i ('> ($ Id.VSub_Number '$1') <')'>)} spids: [434] ) ] ) (C {<export>} {<GIT_REFLOG_ACTION>}) ] spids: [426 431 447 -1] ) ] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:last_count) op: assign_op.Equal rhs: (word.Empty) spids: [455] ) ] ) (command.ShFunction name: mark_action_done body: (BraceGroup children: [ (command.Simple 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 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 ) (C {<mv>} {<-f>} {(DQ ($ Id.VSub_DollarName '$todo')) <.new>} {(DQ ($ Id.VSub_DollarName '$todo'))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:new_count) op: assign_op.Equal rhs: { (word_part.ArithSub anode: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (command.Simple 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 ) (C {<wc>} {<-l>}) ] negated: F ) ) } ) } spids: [518] ) ] ) (command.Simple 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 pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:total) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName '$new_count')} right: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (command.Simple 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 ) (C {<wc>} {<-l>}) ] negated: F ) ) } ) ) } spids: [554] ) ] ) (command.Simple 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 arms: [ (if_arm cond: (condition.Shell commands: [ (C {<test>} {(DQ ($ Id.VSub_DollarName '$last_count'))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$new_count'))} ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:last_count) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$new_count')} spids: [611] ) ] ) (command.Sentence child: (C {<eval_gettext>} { (DQ <'Rebasing ('> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ) <'new_count/'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'total)'> ) } ) terminator: <Id.Op_Semi _> ) (C {<printf>} {(DQ <Id.Lit_BadBackslash '\\'> <r>)}) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$verbose'))}) (C {<echo>}) ] ) ] spids: [592 608] ) ] ) ] ) ) (command.ShFunction name: reschedule_last_action body: (BraceGroup children: [ (command.Pipeline children: [ (C {<tail>} {<-n>} {<1>} {(DQ ($ Id.VSub_DollarName '$done'))}) (command.Simple 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 ) ] negated: F ) (command.Simple words: [{<sed>} {<-e>} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <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 ) (C {<mv>} {<-f>} {(DQ ($ Id.VSub_DollarName '$todo')) <.new>} {(DQ ($ Id.VSub_DollarName '$todo'))} ) (C {<mv>} {<-f>} {(DQ ($ Id.VSub_DollarName '$done')) <.new>} {(DQ ($ Id.VSub_DollarName '$done'))} ) ] ) ) (command.ShFunction name: append_todo_help body: (BraceGroup children: [ (command.Pipeline children: [ (C {<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 '\\"'>) <squash> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ) <', 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'> ) } ) (command.Simple 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 ) ] negated: F ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<test>} { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<get_missing_commit_check_level>}) ) } {<Id.Lit_Equals '='>} {<error>} ) ] ) action: [ (command.Pipeline children: [ (C {<gettext>} { (DQ <'\n'> < 'Do not remove any line. Use \'drop\' explicitly to remove a commit.\n' > ) } ) (command.Simple 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 ) ] negated: F ) ] spids: [788 801] ) ] else_action: [ (command.Pipeline children: [ (C {<gettext>} {(DQ <'\n'> <'If you remove a line here THAT COMMIT WILL BE LOST.\n'>)} ) (command.Simple 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 ) ] negated: F ) ] ) ] ) ) (command.ShFunction name: make_patch body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:sha1_and_parents) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<rev-list>} {<--parents>} {<-1>} {(DQ ($ Id.VSub_Number '$1'))}) ) ) } spids: [862] ) ] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$sha1_and_parents'))} arms: [ (case_arm pat_list: [ {<Id.Lit_QMark '?'> <Id.Lit_Star '*'> (SQ <' '>) <Id.Lit_QMark '?'> <Id.Lit_Star '*'> (SQ <' '>) <Id.Lit_QMark '?'> <Id.Lit_Star '*'> } ] action: [(C {<git>} {<diff>} {<--cc>} {($ Id.VSub_DollarName '$sha1_and_parents')})] spids: [889 901 913 -1] ) (case_arm pat_list: [ {<Id.Lit_QMark '?'> <Id.Lit_Star '*'> (SQ <' '>) <Id.Lit_QMark '?'> <Id.Lit_Star '*'> } ] action: [(C {<git>} {<diff-tree>} {<-p>} {(DQ ($ Id.VSub_Number '$1') <'^!'>)})] spids: [916 923 938 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [(C {<echo>} {(DQ <'Root commit'>)})] spids: [941 942 952 -1] ) ] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName '$state_dir')) <'/patch'>} ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<test>} {<-f>} {(DQ ($ Id.VSub_DollarName '$msg'))}) (command.Simple 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 ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<test>} {<-f>} {(DQ ($ Id.VSub_DollarName '$author_script'))}) (command.Simple 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 ) ] ) ] ) ) (command.ShFunction name: die_with_patch body: (BraceGroup children: [ (command.Simple 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 ) (C {<make_patch>} {(DQ ($ Id.VSub_Number '$1'))}) (C {<die>} {(DQ ($ Id.VSub_Number '$2'))}) ] ) ) (command.ShFunction name: exit_with_patch body: (BraceGroup children: [ (command.Simple 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 ) (C {<make_patch>} {($ Id.VSub_Number '$1')}) (command.Simple 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 pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:gpg_sign_opt_quoted) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name gpg_sign_opt> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonPlus ':+'> arg_word: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<rev-parse>} {<--sq-quote>} {(DQ ($ Id.VSub_DollarName '$gpg_sign_opt'))} ) ) } ) ) } spids: [1095] ) ] ) (C {<warn>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<eval_gettext>} { (DQ <'You can amend the commit now, with\n'> <'\n'> <'\tgit commit --amend '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ) <'gpg_sign_opt_quoted\n'> <'\n'> <'Once you are satisfied with your changes, run\n'> <'\n'> <'\tgit rebase --continue'> ) } ) ) ) } ) (C {<warn>}) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {($ Id.VSub_Number '$2')} ) ] ) ) (command.ShFunction name: die_abort body: (BraceGroup children: [ (C {<apply_autostash>}) (C {<rm>} {<-rf>} {(DQ ($ Id.VSub_DollarName '$state_dir'))}) (C {<die>} {(DQ ($ Id.VSub_Number '$1'))}) ] ) ) (command.ShFunction name: has_action body: (BraceGroup children: [ (C {<test>} {<-n>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple 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 ) ) ) } ) ] ) ) (command.ShFunction name: is_empty_commit body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:tree) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple 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 ) ) } spids: [1211] ) ] ) (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:sha1) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [1238] ) ] ) (C {<die>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<eval_gettext>} { (DQ (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'sha1: not a commit that can be picked'> ) } ) ) ) } ) ] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ptree) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple 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 ) ) } spids: [1259] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ptree) op: assign_op.Equal rhs: {<4b825dc642cb6eb9a060e54bf8d69288fbee4904>} spids: [1285] ) ] ) ] ) (C {<test>} {(DQ ($ Id.VSub_DollarName '$tree'))} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$ptree'))} ) ] ) ) (command.ShFunction name: is_merge_commit body: (BraceGroup children: [ (command.Simple 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 ) ] ) ) (command.ShFunction name: do_with_author body: (BraceGroup children: [ (command.Subshell child: (command.CommandList children: [ (C {<export>} {<GIT_AUTHOR_NAME>} {<GIT_AUTHOR_EMAIL>} {<GIT_AUTHOR_DATE>}) (C {(DQ ($ Id.VSub_At '$@'))}) ] ) ) ] ) ) (command.ShFunction name: git_sequence_editor body: (BraceGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$GIT_SEQUENCE_EDITOR'))}) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:GIT_SEQUENCE_EDITOR) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<config>} {<sequence.editor>}) ) ) } spids: [1392] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$GIT_SEQUENCE_EDITOR'))} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:GIT_SEQUENCE_EDITOR) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<Id.KW_Var var>} {<GIT_EDITOR>}) ) ) } spids: [1420] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_QMark '$?')} ) ] ) ] spids: [1404 1417] ) ] ) ] spids: [1378 1389] ) ] ) (C {<eval>} {(DQ ($ Id.VSub_DollarName '$GIT_SEQUENCE_EDITOR'))} {(SQ <'"$@"'>)}) ] ) ) (command.ShFunction name: pick_one body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ff) op: assign_op.Equal rhs: {<--ff>} spids: [1466] ) ] ) (command.Case to_match: {(DQ ($ Id.VSub_Number '$1'))} arms: [ (case_arm pat_list: [{<-n>}] action: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:sha1) op: assign_op.Equal rhs: {($ Id.VSub_Number '$2')} spids: [1482] ) ] ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ff) op: assign_op.Equal rhs: (word.Empty) spids: [1486] ) ] ) ] spids: [1479 1480 1488 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:sha1) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [1493] ) ] ) ] spids: [1490 1491 1496 -1] ) ] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$force_rebase'))} arms: [ (case_arm pat_list:[{(SQ )}] spids:[1509 1511 1513 -1]) (case_arm pat_list: [{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ff) op: assign_op.Equal rhs: (word.Empty) spids: [1519] ) ] ) ] spids: [1515 1517 1521 -1] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<output>} {<git>} {<rev-parse>} {<--verify>} {($ Id.VSub_DollarName '$sha1')}) (C {<die>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<eval_gettext>} { (DQ <'Invalid commit name: '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ) <sha1> ) } ) ) ) } ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [(C {<is_empty_commit>} {(DQ ($ Id.VSub_DollarName '$sha1'))})] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:empty_args) op: assign_op.Equal rhs: {(DQ <--allow-empty>)} spids: [1566] ) ] ) ] spids: [1554 1563] ) ] ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (C {<test>} {<-d>} {(DQ ($ Id.VSub_DollarName '$rewritten'))}) (C {<pick_one_preserving_merges>} {(DQ ($ Id.VSub_At '$@'))}) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] ) (C {<output>} {<eval>} {<git>} {<cherry-pick>} { (braced_var_sub token: <Id.VSub_Name gpg_sign_opt> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonPlus ':+'> arg_word: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<rev-parse>} {<--sq-quote>} {(DQ ($ Id.VSub_DollarName '$gpg_sign_opt'))} ) ) } ) ) } {(DQ ($ Id.VSub_DollarName '$strategy_args'))} {($ Id.VSub_DollarName '$empty_args')} {($ Id.VSub_DollarName '$ff')} {(DQ ($ Id.VSub_At '$@'))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ret) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [1648] ) ] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$ret'))} arms: [ (case_arm pat_list: [{<Id.Lit_LBracket '['> <01> <Id.Lit_RBracket ']'>}] spids: [1660 1663 1665 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [(C {<reschedule_last_action>})] spids: [1667 1668 1672 -1] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_DollarName '$ret')} ) ] ) ) (command.ShFunction name: pick_one_preserving_merges body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fast_forward) op: assign_op.Equal rhs: {<t>} spids: [1692] ) ] ) (command.Case to_match: {(DQ ($ Id.VSub_Number '$1'))} arms: [ (case_arm pat_list: [{<-n>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fast_forward) op: assign_op.Equal rhs: {<f>} spids: [1709] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:sha1) op: assign_op.Equal rhs: {($ Id.VSub_Number '$2')} spids: [1713] ) ] ) ] spids: [1705 1706 1717 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:sha1) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [1724] ) ] ) ] spids: [1720 1721 1728 -1] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:sha1) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<rev-parse>} {($ Id.VSub_DollarName '$sha1')}) ) } spids: [1734] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<test>} {<-f>} {(DQ ($ Id.VSub_DollarName '$state_dir')) <'/current-commit'>} ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<test>} {(DQ ($ Id.VSub_DollarName '$fast_forward'))} {<Id.Lit_Equals '='>} {<t>} ) ] ) action: [ (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands:[(C {<read>} {<current_commit>})]) body: (command.DoGroup children: [ (command.Simple 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 ) ] ) redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName '$state_dir')) <'/current-commit'>} ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<rm>} {(DQ ($ Id.VSub_DollarName '$state_dir')) <'/current-commit'>} ) (C {<die>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<gettext>} {(DQ <'Cannot write current commit\'s replacement sha1'>)} ) ) ) } ) ] ) ] spids: [1760 1773] ) ] ) ] spids: [1745 1757] ) ] ) (command.Simple 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 pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:new_parents) op: assign_op.Equal rhs: (word.Empty) spids: [1857] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:pend) op: assign_op.Equal rhs: { (DQ <' '> (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<git>} {<rev-list>} {<--parents>} {<-1>} {($ Id.VSub_DollarName '$sha1')} ) (C {<cut>} {<-d> (SQ <' '>)} {<-s>} {<-f2->}) ] negated: F ) ) ) } spids: [1860] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<test>} {(DQ ($ Id.VSub_DollarName '$pend'))} {<Id.Lit_Equals '='>} {(DQ <' '>)} ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:pend) op: assign_op.Equal rhs: {(DQ <' root'>)} spids: [1908] ) ] ) ] spids: [1890 1905] ) ] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$pend'))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ )} {<Id.Lit_RBracket ']'>} ) ] ) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:p) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<expr>} {(DQ ($ Id.VSub_DollarName '$pend'))} {<Id.Lit_Colon ':'>} {(SQ <' \\([^ ]*\\)'>)} ) ) } spids: [1937] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:pend) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: <Id.VSub_Name pend> suffix_op: (suffix_op.Unary tok: <Id.VOp1_Pound '#'> arg_word: {<' '> ($ Id.VSub_DollarName '$p')} ) ) ) } spids: [1953] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<test>} {<-f>} {(DQ ($ Id.VSub_DollarName '$rewritten')) <'/'> ($ Id.VSub_DollarName '$p') } ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:new_p) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<cat>} {(DQ ($ Id.VSub_DollarName '$rewritten')) <'/'> ($ Id.VSub_DollarName '$p') } ) ) } spids: [1981] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$new_p'))}) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:new_p) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<rev-parse>} {<HEAD>}) ) } spids: [2020] ) ] ) ] spids: [2006 2017] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<test>} {($ Id.VSub_DollarName '$p')} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {($ Id.VSub_DollarName '$new_p')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fast_forward) op: assign_op.Equal rhs: {<f>} spids: [2045] ) ] ) ] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$new_parents'))} arms: [ (case_arm pat_list: [ {<Id.Lit_Star '*'> ($ Id.VSub_DollarName '$new_p') <Id.Lit_Star '*'> } ] spids: [2058 2061 2064 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:new_parents) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$new_parents') <' '> ($ Id.VSub_DollarName '$new_p') ) } spids: [2074] ) ] ) ] spids: [2070 2071 2082 -1] ) ] ) ] spids: [1965 1978] ) ] else_action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<test>} {<-f>} {(DQ ($ Id.VSub_DollarName '$dropped')) <'/'> ($ Id.VSub_DollarName '$p') } ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fast_forward) op: assign_op.Equal rhs: {<f>} spids: [2107] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:replacement) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<cat>} {(DQ ($ Id.VSub_DollarName '$dropped')) <'/'> ($ Id.VSub_DollarName '$p') } ) ) ) } spids: [2111] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$replacement'))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:replacement) op: assign_op.Equal rhs: {<root>} spids: [2135] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:pend) op: assign_op.Equal rhs: { (DQ <' '> ($ Id.VSub_DollarName '$replacement') ($ Id.VSub_DollarName '$pend') ) } spids: [2139] ) ] ) ] spids: [2091 2104] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:new_parents) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$new_parents') <' '> ($ Id.VSub_DollarName '$p') ) } spids: [2150] ) ] ) ] ) ] ) ] ) ) (command.Case to_match: {($ Id.VSub_DollarName '$fast_forward')} arms: [ (case_arm pat_list: [{<t>}] action: [ (C {<output>} {<warn>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<eval_gettext>} { (DQ <'Fast-forward to '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ) <sha1> ) } ) ) ) } ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<output>} {<git>} {<reset>} {<--hard>} {($ Id.VSub_DollarName '$sha1')}) (C {<die>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<eval_gettext>} { (DQ <'Cannot fast-forward to '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ) <sha1> ) } ) ) ) } ) ] ) ] spids: [2174 2175 2223 -1] ) (case_arm pat_list: [{<f>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:first_parent) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<expr>} {(DQ ($ Id.VSub_DollarName '$new_parents'))} {<Id.Lit_Colon ':'>} {(SQ <' \\([^ ]*\\)'>)} ) ) } spids: [2230] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_Number '$1'))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <-n>)} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple 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 ) (C {<die>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<eval_gettext>} { (DQ <'Cannot move HEAD to '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ) <first_parent> ) } ) ) ) } ) ] ) ] spids: [2247 2265] ) ] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$new_parents'))} arms: [ (case_arm pat_list: [{(SQ <' '>) <Id.Lit_Star '*'> (SQ <' '>) <Id.Lit_Star '*'>}] action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<test>} {(DQ <a> ($ Id.VSub_Number '$1'))} {<Id.Lit_Equals '='>} {<a-n>} ) (C {<die>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<eval_gettext>} { (DQ <'Refusing to squash a merge: '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ) <sha1> ) } ) ) ) } ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:author_script_content) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<get_author_ident_from_commit>} {($ Id.VSub_DollarName '$sha1')} ) ) } spids: [2359] ) ] ) (C {<eval>} {(DQ ($ Id.VSub_DollarName '$author_script_content'))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:msg_content) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<commit_message>} {($ Id.VSub_DollarName '$sha1')}) ) ) } spids: [2374] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:new_parents) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name new_parents> suffix_op: (suffix_op.Unary tok: <Id.VOp1_Pound '#'> arg_word: {<' '> ($ Id.VSub_DollarName '$first_parent')} ) ) } spids: [2388] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:merge_args) op: assign_op.Equal rhs: {(DQ <'--no-log --no-ff'>)} spids: [2397] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Pipeline children: [ (C {<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'> ) } ) ] negated: T ) ] ) action: [ (command.Simple 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 ) (C {<die_with_patch>} {($ Id.VSub_DollarName '$sha1')} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<eval_gettext>} { (DQ <'Error redoing merge '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ) <sha1> ) } ) ) ) } ) ] spids: [2403 2421] ) ] ) (command.Simple words: [ {<echo>} { (DQ ($ Id.VSub_DollarName '$sha1') <' '> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<rev-parse>} {<HEAD> <Id.Lit_Other '^'> <0>}) ) ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName '$rewritten_list'))} ) ] do_fork: T ) ] spids: [2315 2323 2487 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<output>} {<eval>} {<git>} {<cherry-pick>} { (braced_var_sub token: <Id.VSub_Name gpg_sign_opt> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonPlus ':+'> arg_word: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<rev-parse>} {<--sq-quote>} {(DQ ($ Id.VSub_DollarName '$gpg_sign_opt'))} ) ) } ) ) } {(DQ ($ Id.VSub_DollarName '$strategy_args'))} {(DQ ($ Id.VSub_At '$@'))} ) (C {<die_with_patch>} {($ Id.VSub_DollarName '$sha1')} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<eval_gettext>} { (DQ <'Could not pick '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ) <sha1> ) } ) ) ) } ) ] ) ] spids: [2490 2491 2550 -1] ) ] ) ] spids: [2226 2227 2556 -1] ) ] ) ] ) ) (command.ShFunction name: this_nth_commit_message body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:n) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [2572] ) ] ) (C {<eval_gettext>} { (DQ <'This is the commit message #'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'{n}:'> ) } ) ] ) ) (command.ShFunction name: skip_nth_commit_message body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:n) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [2595] ) ] ) (C {<eval_gettext>} { (DQ <'The commit message #'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'{n} will be skipped:'> ) } ) ] ) ) (command.ShFunction name: update_squash_messages body: (BraceGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<test>} {<-f>} {(DQ ($ Id.VSub_DollarName '$squash_msg'))}) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<mv>} {(DQ ($ Id.VSub_DollarName '$squash_msg'))} {(DQ ($ Id.VSub_DollarName '$squash_msg')) <.bak>} ) (command.ControlFlow token:<Id.ControlFlow_Exit exit>) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:count) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple 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.Lit_Digits 1>} ) ) } spids: [2648] ) ] ) (BraceGroup children: [ (C {<printf>} {(SQ <'%s\\n'>)} { (DQ ($ Id.VSub_DollarName '$comment_char') <' '> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<eval_ngettext>} { (DQ <'This is a combination of '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ) <'count commit.'> ) } { (DQ <'This is a combination of '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ) <'count commits.'> ) } {($ Id.VSub_DollarName '$count')} ) ) ) } ) (command.Simple 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'))} ) ] ) ] spids: [2618 2629] ) ] else_action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple 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 ) (C {<die>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<gettext>} { (DQ <'Cannot write '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ) <fixup_msg> ) } ) ) ) } ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:count) op: assign_op.Equal rhs: {<2>} spids: [2789] ) ] ) (BraceGroup children: [ (C {<printf>} {(SQ <'%s\\n'>)} { (DQ ($ Id.VSub_DollarName '$comment_char') <' '> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<gettext>} {(DQ <'This is a combination of 2 commits.'>)}) ) ) } ) (C {<printf>} {(SQ <'%s\\n'>)} { (DQ ($ Id.VSub_DollarName '$comment_char') <' '> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<gettext>} {(DQ <'This is the 1st commit message:'>)}) ) ) } ) (C {<echo>}) (C {<cat>} {(DQ ($ Id.VSub_DollarName '$fixup_msg'))}) ] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName '$squash_msg'))} ) ] ) ] ) (command.Case to_match: {($ Id.VSub_Number '$1')} arms: [ (case_arm pat_list: [{<squash>}] action: [ (C {<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName '$fixup_msg'))}) (C {<echo>}) (C {<printf>} {(SQ <'%s\\n'>)} { (DQ ($ Id.VSub_DollarName '$comment_char') <' '> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<this_nth_commit_message>} {($ Id.VSub_DollarName '$count')}) ) ) } ) (C {<echo>}) (C {<commit_message>} {($ Id.VSub_Number '$2')}) ] spids: [2862 2863 2903 -1] ) (case_arm pat_list: [{<fixup>}] action: [ (C {<echo>}) (C {<printf>} {(SQ <'%s\\n'>)} { (DQ ($ Id.VSub_DollarName '$comment_char') <' '> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<skip_nth_commit_message>} {($ Id.VSub_DollarName '$count')}) ) ) } ) (C {<echo>}) (command.Pipeline children: [ (C {<commit_message>} {($ Id.VSub_Number '$2')}) (C {<git>} {<stripspace>} {<--comment-lines>}) (C {<sed>} {<-e>} {(SQ <'s/ /\t/'>)}) ] negated: F ) ] spids: [2906 2907 2960 -1] ) ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName '$squash_msg'))} ) ] ) ] ) ) (command.ShFunction name: peek_next_command body: (BraceGroup children: [ (command.Pipeline children: [ (command.Simple 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 ) (C {<sed>} {<-n>} {<-e>} {(SQ <'s/ .*//p'>)} {<-e>} {<q>}) ] negated: F ) ] ) ) (command.ShFunction name: die_failed_squash body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:sha1) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [3036] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:rest) op: assign_op.Equal rhs: {($ Id.VSub_Number '$2')} spids: [3040] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<mv>} {(DQ ($ Id.VSub_DollarName '$squash_msg'))} {(DQ ($ Id.VSub_DollarName '$msg'))} ) (command.ControlFlow token:<Id.ControlFlow_Exit exit>) ] ) (C {<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName '$fixup_msg'))}) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<cp>} {(DQ ($ Id.VSub_DollarName '$msg'))} {(DQ ($ Id.VSub_DollarName '$GIT_DIR')) <'/MERGE_MSG'>} ) (command.ControlFlow token:<Id.ControlFlow_Exit exit>) ] ) (C {<warn>}) (C {<warn>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<eval_gettext>} { (DQ <'Could not apply '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ) <'sha1... '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <rest> ) } ) ) ) } ) (C {<die_with_patch>} {($ Id.VSub_DollarName '$sha1')} {(DQ )}) ] ) ) (command.ShFunction name: flush_rewritten_pending body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<test>} {<-s>} {(DQ ($ Id.VSub_DollarName '$rewritten_pending'))}) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:newsha1) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<rev-parse>} {<HEAD> <Id.Lit_Other '^'> <0>}) ) ) } spids: [3134] ) ] ) (command.Simple 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 ) (C {<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName '$rewritten_pending'))}) ] ) ) (command.ShFunction name: record_in_rewritten body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:oldsha1) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<rev-parse>} {($ Id.VSub_Number '$1')}) ) ) } spids: [3189] ) ] ) (command.Simple 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 to_match: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<peek_next_command>}) ) ) } arms: [ (case_arm pat_list: [{<squash>} {<s>} {<fixup>} {<f>}] spids: [3226 3233 3236 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [(C {<flush_rewritten_pending>})] spids: [3239 3240 3246 -1] ) ] ) ] ) ) (command.ShFunction name: do_pick body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:sha1) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [3262] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:rest) op: assign_op.Equal rhs: {($ Id.VSub_Number '$2')} spids: [3266] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<test>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<rev-parse>} {<HEAD>}) ) ) } {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$squash_onto'))} ) ] ) action: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DPipe] children: [ (C {<git>} {<commit>} {<--allow-empty>} {<--allow-empty-message>} {<--amend>} {<--no-post-rewrite>} {<-n>} {<-q>} {<-C>} {($ Id.VSub_DollarName '$sha1')} ) (C {<pick_one>} {<-n>} {($ Id.VSub_DollarName '$sha1')}) (C {<git>} {<commit>} {<--allow-empty>} {<--allow-empty-message>} {<--amend>} {<--no-post-rewrite>} {<-n>} {<-q>} {<-C>} {($ Id.VSub_DollarName '$sha1')} { (braced_var_sub token: <Id.VSub_Name gpg_sign_opt> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonPlus ':+'> arg_word: {(DQ ($ Id.VSub_DollarName '$gpg_sign_opt'))} ) ) } ) (C {<die_with_patch>} {($ Id.VSub_DollarName '$sha1')} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<eval_gettext>} { (DQ <'Could not apply '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ) <'sha1... '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <rest> ) } ) ) ) } ) ] ) ] spids: [3270 3291] ) ] else_action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<pick_one>} {($ Id.VSub_DollarName '$sha1')}) (C {<die_with_patch>} {($ Id.VSub_DollarName '$sha1')} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<eval_gettext>} { (DQ <'Could not apply '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ) <'sha1... '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <rest> ) } ) ) ) } ) ] ) ] ) ] ) ) (command.ShFunction name: do_next body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<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'>} ) (command.ControlFlow token:<Id.ControlFlow_Exit exit>) ] ) (command.Simple 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 to_match: {(DQ ($ Id.VSub_DollarName '$command'))} arms: [ (case_arm pat_list: [ {(DQ ($ Id.VSub_DollarName '$comment_char')) <Id.Lit_Star '*'>} {(SQ )} {<noop>} {<drop>} {<d>} ] action: [(C {<mark_action_done>})] spids: [3508 3521 3527 -1] ) (case_arm pat_list: [{(DQ ($ Id.VSub_DollarName '$cr'))}] action: [(C {<mark_action_done>})] spids: [3530 3533 3543 -1] ) (case_arm pat_list: [{<pick>} {<p>}] action: [ (C {<comment_for_reflog>} {<pick>}) (C {<mark_action_done>}) (C {<do_pick>} {($ Id.VSub_DollarName '$sha1')} {(DQ ($ Id.VSub_DollarName '$rest'))}) (C {<record_in_rewritten>} {($ Id.VSub_DollarName '$sha1')}) ] spids: [3546 3549 3575 -1] ) (case_arm pat_list: [{<reword>} {<r>}] action: [ (C {<comment_for_reflog>} {<reword>}) (C {<mark_action_done>}) (C {<do_pick>} {($ Id.VSub_DollarName '$sha1')} {(DQ ($ Id.VSub_DollarName '$rest'))}) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<git>} {<commit>} {<--amend>} {<--no-post-rewrite>} { (braced_var_sub token: <Id.VSub_Name gpg_sign_opt> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonPlus ':+'> arg_word: {(DQ ($ Id.VSub_DollarName '$gpg_sign_opt'))} ) ) } ) (BraceGroup children: [ (C {<warn>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<eval_gettext>} { (DQ <'Could not amend commit after successfully picking '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ) <'sha1... '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'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.'> ) } ) ) ) } ) (C {<exit_with_patch>} {($ Id.VSub_DollarName '$sha1')} {<1>}) ] ) ] ) (C {<record_in_rewritten>} {($ Id.VSub_DollarName '$sha1')}) ] spids: [3578 3581 3659 -1] ) (case_arm pat_list: [{<edit>} {<e>}] action: [ (C {<comment_for_reflog>} {<edit>}) (C {<mark_action_done>}) (C {<do_pick>} {($ Id.VSub_DollarName '$sha1')} {(DQ ($ Id.VSub_DollarName '$rest'))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:sha1_abbrev) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<rev-parse>} {<--short>} {($ Id.VSub_DollarName '$sha1')}) ) } spids: [3686] ) ] ) (C {<warn>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<eval_gettext>} { (DQ <'Stopped at '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ) <'sha1_abbrev... '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <rest> ) } ) ) ) } ) (C {<exit_with_patch>} {($ Id.VSub_DollarName '$sha1')} {<0>}) ] spids: [3662 3665 3722 -1] ) (case_arm pat_list: [{<squash>} {<s>} {<fixup>} {<f>}] action: [ (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$command'))} arms: [ (case_arm pat_list: [{<squash>} {<s>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:squash_style) op: assign_op.Equal rhs: {<squash>} spids: [3750] ) ] ) ] spids: [3744 3747 3754 -1] ) (case_arm pat_list: [{<fixup>} {<f>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:squash_style) op: assign_op.Equal rhs: {<fixup>} spids: [3763] ) ] ) ] spids: [3757 3760 3767 -1] ) ] ) (C {<comment_for_reflog>} {($ Id.VSub_DollarName '$squash_style')}) (command.AndOr ops: [Id.Op_DAmp Id.Op_DPipe] children: [ (C {<test>} {<-f>} {(DQ ($ Id.VSub_DollarName '$done'))}) (C {<has_action>} {(DQ ($ Id.VSub_DollarName '$done'))}) (C {<die>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<eval_gettext>} { (DQ <'Cannot \''> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ) <'squash_style\' without a previous commit'> ) } ) ) ) } ) ] ) (C {<mark_action_done>}) (C {<update_squash_messages>} {($ Id.VSub_DollarName '$squash_style')} {($ Id.VSub_DollarName '$sha1')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:author_script_content) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<get_author_ident_from_commit>} {<HEAD>}) ) } spids: [3824] ) ] ) (command.Simple 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 ) (C {<eval>} {(DQ ($ Id.VSub_DollarName '$author_script_content'))}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Pipeline children: [(C {<pick_one>} {<-n>} {($ Id.VSub_DollarName '$sha1')})] negated: T ) ] ) action: [ (command.Simple 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 ) (C {<die_failed_squash>} {($ Id.VSub_DollarName '$sha1')} {(DQ ($ Id.VSub_DollarName '$rest'))} ) ] spids: [3852 3863] ) ] ) (command.Case to_match: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<peek_next_command>}) ) ) } arms: [ (case_arm pat_list: [{<squash>} {<s>} {<fixup>} {<f>}] action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<do_with_author>} {<output>} {<git>} {<commit>} {<--amend>} {<--no-verify>} {<-F>} {(DQ ($ Id.VSub_DollarName '$squash_msg'))} { (braced_var_sub token: <Id.VSub_Name gpg_sign_opt> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonPlus ':+'> arg_word: {(DQ ($ Id.VSub_DollarName '$gpg_sign_opt'))} ) ) } ) (C {<die_failed_squash>} {($ Id.VSub_DollarName '$sha1')} {(DQ ($ Id.VSub_DollarName '$rest'))} ) ] ) ] spids: [3903 3910 3961 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<test>} {<-f>} {(DQ ($ Id.VSub_DollarName '$fixup_msg'))}) ] ) action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<do_with_author>} {<git>} {<commit>} {<--amend>} {<--no-verify>} {<-F>} {(DQ ($ Id.VSub_DollarName '$fixup_msg'))} { (braced_var_sub token: <Id.VSub_Name gpg_sign_opt> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonPlus ':+'> arg_word: {(DQ ($ Id.VSub_DollarName '$gpg_sign_opt'))} ) ) } ) (C {<die_failed_squash>} {($ Id.VSub_DollarName '$sha1')} {(DQ ($ Id.VSub_DollarName '$rest'))} ) ] ) ] spids: [3972 3983] ) ] else_action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<cp>} {(DQ ($ Id.VSub_DollarName '$squash_msg'))} {(DQ ($ Id.VSub_DollarName '$GIT_DIR')) <'/SQUASH_MSG'>} ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> ) ] ) (C {<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName '$GIT_DIR')) <'/MERGE_MSG'>}) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<do_with_author>} {<git>} {<commit>} {<--amend>} {<--no-verify>} {<-F>} {(DQ ($ Id.VSub_DollarName '$GIT_DIR')) <'/SQUASH_MSG'>} {<-e>} { (braced_var_sub token: <Id.VSub_Name gpg_sign_opt> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonPlus ':+'> arg_word: {(DQ ($ Id.VSub_DollarName '$gpg_sign_opt'))} ) ) } ) (C {<die_failed_squash>} {($ Id.VSub_DollarName '$sha1')} {(DQ ($ Id.VSub_DollarName '$rest'))} ) ] ) ] ) (C {<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName '$squash_msg'))} {(DQ ($ Id.VSub_DollarName '$fixup_msg'))} ) ] spids: [3964 3965 4110 -1] ) ] ) (C {<record_in_rewritten>} {($ Id.VSub_DollarName '$sha1')}) ] spids: [3725 3732 4121 -1] ) (case_arm pat_list: [{<x>} {(DQ <exec>)}] action: [ (command.Simple 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 ) (C {<mark_action_done>}) (C {<eval_gettextln>} { (DQ <'Executing: '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <rest> ) } ) (C { (DQ (braced_var_sub token: <Id.VSub_Name SHELL> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonHyphen ':-'> arg_word: {<'@SHELL_PATH@'>} ) ) ) } {<-c>} {(DQ ($ Id.VSub_DollarName '$rest'))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:status) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [4177] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:dirty) op: assign_op.Equal rhs: {<f>} spids: [4185] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Subshell child: (command.Simple 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 ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:dirty) op: assign_op.Equal rhs: {<t>} spids: [4202] ) ] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<test>} {(DQ ($ Id.VSub_DollarName '$status'))} {<-ne>} {<0>}) ] ) action: [ (C {<warn>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<eval_gettext>} { (DQ <'Execution failed: '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ) <rest> ) } ) ) ) } ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<test>} {(DQ ($ Id.VSub_DollarName '$dirty'))} {<Id.Lit_Equals '='>} {<f>} ) (C {<warn>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<gettext>} { (DQ < 'and made changes to the index and/or the working tree' > ) } ) ) ) } ) ] ) (C {<warn>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<gettext>} { (DQ <'You can fix the problem, and then run\n'> <'\n'> <'\tgit rebase --continue'> ) } ) ) ) } ) (C {<warn>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<test>} {($ Id.VSub_DollarName '$status')} {<-eq>} {<127>}) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:status) op: assign_op.Equal rhs: {<1>} spids: [4300] ) ] ) ] spids: [4283 4297] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {(DQ ($ Id.VSub_DollarName '$status'))} ) ] spids: [4206 4219] ) (if_arm cond: (condition.Shell commands: [ (C {<test>} {(DQ ($ Id.VSub_DollarName '$dirty'))} {<Id.Lit_Equals '='>} {<t>} ) ] ) action: [ (C {<warn>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<eval_gettext>} { (DQ <'Execution succeeded: '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ) <'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'> ) } ) ) ) } ) (C {<warn>}) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [4314 4327] ) ] ) ] spids: [4124 4129 4365 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (C {<warn>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<eval_gettext>} { (DQ <'Unknown command: '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ) <'command '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'sha1 '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ) <rest> ) } ) ) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fixtodo) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<gettext>} {(DQ <'Please fix this using \'git rebase --edit-todo\'.'>)} ) ) ) } spids: [4391] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Simple 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 ) ] ) action: [ (C {<die_with_patch>} {($ Id.VSub_DollarName '$sha1')} {(DQ ($ Id.VSub_DollarName '$fixtodo'))} ) ] spids: [4403 4421] ) ] else_action: [(C {<die>} {(DQ ($ Id.VSub_DollarName '$fixtodo'))})] ) ] spids: [4368 4369 4446 -1] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<test>} {<-s>} {(DQ ($ Id.VSub_DollarName '$todo'))}) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp] children: [ (C {<comment_for_reflog>} {<finish>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:newhead) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<rev-parse>} {<HEAD>}) ) } spids: [4473] ) ] ) (command.Case to_match: {($ Id.VSub_DollarName '$head_name')} arms: [ (case_arm pat_list: [{<'refs/'> <Id.Lit_Star '*'>}] action: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:message) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$GIT_REFLOG_ACTION') <': '> ($ Id.VSub_DollarName '$head_name') <' onto '> ($ Id.VSub_DollarName '$onto') ) } spids: [4497] ) ] ) (C {<git>} {<update-ref>} {<-m>} {(DQ ($ Id.VSub_DollarName '$message'))} {($ Id.VSub_DollarName '$head_name')} {($ Id.VSub_DollarName '$newhead')} {($ Id.VSub_DollarName '$orig_head')} ) (C {<git>} {<symbolic-ref>} {<-m>} { (DQ ($ Id.VSub_DollarName '$GIT_REFLOG_ACTION') <': returning to '> ($ Id.VSub_DollarName '$head_name') ) } {<HEAD>} {($ Id.VSub_DollarName '$head_name')} ) ] ) ] spids: [4492 4494 4549 -1] ) ] ) (BraceGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<test>} {<Id.KW_Bang '!'>} {<-f>} {(DQ ($ Id.VSub_DollarName '$state_dir')) <'/verbose'>} ) (C {<git>} {<diff-tree>} {<--stat>} {($ Id.VSub_DollarName '$orig_head') <..HEAD>} ) ] ) ] ) (BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DPipe] children: [ (C {<test>} {<-s>} {(DQ ($ Id.VSub_DollarName '$rewritten_list'))}) (command.Simple 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 ) (C {<true>}) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:hook) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<rev-parse>} {<--git-path>} {<'hooks/post-rewrite'>}) ) ) } spids: [4632] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<test>} {<-x>} {(DQ ($ Id.VSub_DollarName '$hook'))}) (C {<test>} {<-s>} {(DQ ($ Id.VSub_DollarName '$rewritten_list'))}) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple 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 ) (C {<true>}) ] spids: [4646 4667] ) ] ) (C {<warn>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<eval_gettext>} { (DQ <'Successfully rebased and updated '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ) <head_name.> ) } ) ) ) } ) ] ) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>}) ] ) ) (command.ShFunction name: do_rest body: (BraceGroup children: [ (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands:[(C {<Id.Lit_Colon ':'>})]) body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<do_next>}) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] ) ] ) ) ] ) ) (command.ShFunction name: skip_unnecessary_picks body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fd) op: assign_op.Equal rhs: {<3>} spids: [4762] ) ] ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DPipe] children: [ (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands:[(C {<read>} {<-r>} {<command>} {<rest>})]) body: (command.DoGroup children: [ (command.Case to_match: { (DQ ($ Id.VSub_DollarName '$fd') <','> ($ Id.VSub_DollarName '$command')) } arms: [ (case_arm pat_list: [{<3> <Id.Lit_Comma ','> <pick>} {<3> <Id.Lit_Comma ','> <p>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:sha1) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name rest> suffix_op: (suffix_op.Unary tok: <Id.VOp1_DPercent '%%'> arg_word: {<' '> <Id.Lit_Other '*'>} ) ) } spids: [4809] ) ] ) (command.Case to_match: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<rev-parse>} {<--verify>} {<--quiet>} {(DQ ($ Id.VSub_DollarName '$sha1')) <Id.Lit_Other '^'>} ) ) ) } arms: [ (case_arm pat_list: [ {(DQ ($ Id.VSub_DollarName '$onto')) <Id.Lit_Star '*'>} ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:onto) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$sha1')} spids: [4847] ) ] ) ] spids: [4840 4844 4851 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fd) op: assign_op.Equal rhs: {<1>} spids: [4858] ) ] ) ] spids: [4854 4855 4862 -1] ) ] ) ] spids: [4795 4802 4868 -1] ) (case_arm pat_list: [ {<3> <Id.Lit_Comma ','> (DQ ($ Id.VSub_DollarName '$comment_char')) <Id.Lit_Star '*'> } {<3> <Id.Lit_Comma ','>} ] spids: [4871 4880 4887 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fd) op: assign_op.Equal rhs: {<1>} spids: [4894] ) ] ) ] spids: [4890 4891 4898 -1] ) ] ) (command.Simple words: [ {<printf>} {(SQ <'%s\\n'>)} { (DQ ($ Id.VSub_DollarName '$command') (braced_var_sub token: <Id.VSub_Name rest> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonPlus ':+'> arg_word: {<' '>} ) ) ($ Id.VSub_DollarName '$rest') ) } ] redirects: [ (redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$fd')} ) ] do_fork: T ) ] ) 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'))} ) ] ) (C {<mv>} {<-f>} {(DQ ($ Id.VSub_DollarName '$todo')) <.new>} {(DQ ($ Id.VSub_DollarName '$todo'))} ) (command.Case to_match: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<peek_next_command>}) ) ) } arms: [ (case_arm pat_list: [{<squash>} {<s>} {<fixup>} {<f>}] action: [(C {<record_in_rewritten>} {(DQ ($ Id.VSub_DollarName '$onto'))})] spids: [4972 4979 4989 -1] ) ] ) (C {<die>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<gettext>} {(DQ <'Could not skip unnecessary pick commands'>)}) ) ) } ) ] ) ] ) ) (command.ShFunction name: transform_todo_ids body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands:[(C {<read>} {<-r>} {<command>} {<rest>})]) body: (command.DoGroup children: [ (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$command'))} arms: [ (case_arm pat_list: [ {(DQ ($ Id.VSub_DollarName '$comment_char')) <Id.Lit_Star '*'>} {<exec>} ] spids: [5043 5051 5062 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:sha1) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<rev-parse>} {<--verify>} {<--quiet>} {(DQ ($ Id.VSub_At '$@'))} { (braced_var_sub token: <Id.VSub_Name rest> suffix_op: (suffix_op.Unary tok: <Id.VOp1_DPercent '%%'> arg_word: {<'[\t ]'> <Id.Lit_Other '*'>} ) ) } ) ) } spids: [5069] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:rest) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$sha1') <' '> (braced_var_sub token: <Id.VSub_Name rest> suffix_op: (suffix_op.Unary tok: <Id.VOp1_Pound '#'> arg_word: {<Id.Lit_Other '*'> <'[\t ]'>} ) ) ) } spids: [5094] ) ] ) ] ) ] spids: [5065 5066 5107 -1] ) ] ) (C {<printf>} {(SQ <'%s\\n'>)} { (DQ ($ Id.VSub_DollarName '$command') (braced_var_sub token: <Id.VSub_Name rest> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonPlus ':+'> arg_word: {<' '>} ) ) ($ Id.VSub_DollarName '$rest') ) } ) ] ) 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>)} ) ] ) (C {<mv>} {<-f>} {(DQ ($ Id.VSub_DollarName '$todo') <.new>)} {(DQ ($ Id.VSub_DollarName '$todo'))} ) ] ) ] ) ) (command.ShFunction name: expand_todo_ids body: (BraceGroup children:[(C {<transform_todo_ids>})]) ) (command.ShFunction name: collapse_todo_ids body: (BraceGroup children:[(C {<transform_todo_ids>} {<--short>})]) ) (command.ShFunction name: rearrange_squash body: (BraceGroup children: [ (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands:[(C {<read>} {<-r>} {<pick>} {<sha1>} {<message>})]) body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<test>} {<-z>} {(DQ (${ Id.VSub_Name format))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:message) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<log>} {<-n>} {<1>} {<--format> <Id.Lit_Equals '='> (DQ <'%s'>)} {(${ Id.VSub_Name sha1)} ) ) } spids: [5252] ) ] ) ] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$message'))} arms: [ (case_arm pat_list: [ {(DQ <'squash! '>) <Id.Lit_Star '*'>} {(DQ <'fixup! '>) <Id.Lit_Star '*'>} ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:action) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: <Id.VSub_Name message> suffix_op: (suffix_op.Unary tok: <Id.VOp1_DPercent '%%'> arg_word: {<Id.Lit_Other '!'> <Id.Lit_Other '*'>} ) ) ) } spids: [5295] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:rest) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$message')} spids: [5306] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:prefix) op: assign_op.Equal rhs: (word.Empty) spids: [5310] ) ] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands:[(C {<Id.Lit_Colon ':'>})]) body: (command.DoGroup children: [ (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$rest'))} arms: [ (case_arm pat_list: [ {(DQ <'squash! '>) <Id.Lit_Star '*'>} {(DQ <'fixup! '>) <Id.Lit_Star '*'>} ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:prefix) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$prefix') (braced_var_sub token: <Id.VSub_Name rest> suffix_op: (suffix_op.Unary tok: <Id.VOp1_DPercent '%%'> arg_word: {<Id.Lit_Other '!'> <Id.Lit_Other '*'> } ) ) <','> ) } spids: [5346] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:rest) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: <Id.VSub_Name rest> suffix_op: (suffix_op.Unary tok: <Id.VOp1_Pound '#'> arg_word: {<Id.Lit_Other '*'> <Id.Lit_Other '!'> <' '> } ) ) ) } spids: [5359] ) ] ) ] spids: [5334 5343 5371 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] spids: [5374 5375 5381 -1] ) ] ) ] ) ) (C {<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'))} ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<test>} { (DQ (braced_var_sub token: <Id.VSub_Name rest> suffix_op: (suffix_op.Unary tok: <Id.VOp1_Pound '#'> arg_word: {<Id.Lit_Other '*'> <' '>} ) ) ) } {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$rest'))} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fullsha) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple 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 ) ) ) } spids: [5448] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$fullsha'))} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<echo>} { (DQ ($ Id.VSub_DollarName '$sha1') <' +'> ($ Id.VSub_DollarName '$action') <' '> ($ Id.VSub_DollarName '$prefix') <' '> ($ Id.VSub_DollarName '$fullsha') ) } ) ] spids: [5469 5480] ) ] ) ] spids: [5425 5445] ) ] ) ] spids: [5283 5292 -1 5510] ) ] ) ] ) 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 ops: [Id.Op_DPipe] children: [ (C {<test>} {<-s>} {(DQ ($ Id.VSub_Number '$1') <.sq>)}) (command.ControlFlow token:<Id.ControlFlow_Return return>) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:used) op: assign_op.Equal rhs: (word.Empty) spids: [5542] ) ] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands:[(C {<read>} {<-r>} {<pick>} {<sha1>} {<message>})]) body: (command.DoGroup children: [ (command.Case to_match: {(DQ <' '> ($ Id.VSub_DollarName '$used'))} arms: [ (case_arm pat_list: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName '$sha1') <' '>) <Id.Lit_Star '*'> } ] action: [(command.ControlFlow token:<Id.ControlFlow_Continue continue>)] spids: [5571 5578 5582 -1] ) ] ) (C {<printf>} {(SQ <'%s\\n'>)} { (DQ ($ Id.VSub_DollarName '$pick') <' '> ($ Id.VSub_DollarName '$sha1') <' '> ($ Id.VSub_DollarName '$message') ) } ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<test>} {<-z>} {(DQ (${ Id.VSub_Name format))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:message) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<log>} {<-n>} {<1>} {<--format> <Id.Lit_Equals '='> (DQ <'%s'>)} {(${ Id.VSub_Name sha1)} ) ) } spids: [5615] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:used) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$used') ($ Id.VSub_DollarName '$sha1') <' '>)} spids: [5637] ) ] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (C {<read>} {<-r>} {<squash>} {<action>} {<msg_prefix>} {<msg_content>}) ] ) body: (command.DoGroup children: [ (command.Case to_match: {(DQ <' '> ($ Id.VSub_DollarName '$used'))} arms: [ (case_arm pat_list: [ {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName '$squash') <' '>) <Id.Lit_Star '*'> } ] action: [ (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) ] spids: [5673 5680 5684 -1] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:emit) op: assign_op.Equal rhs: {<0>} spids: [5690] ) ] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$action'))} arms: [ (case_arm pat_list: [{<Id.Lit_Other '+'> <Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:action) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: <Id.VSub_Name action> suffix_op: (suffix_op.Unary tok: <Id.VOp1_Pound '#'> arg_word: {<Id.Lit_Other '+'>} ) ) ) } spids: [5708] ) ] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$msg_content'))} arms: [ (case_arm pat_list: [ {(DQ ($ Id.VSub_DollarName '$sha1')) <Id.Lit_Star '*'>} ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:emit) op: assign_op.Equal rhs: {<1>} spids: [5736] ) ] ) ] spids: [5730 5734 5738 -1] ) ] ) ] spids: [5703 5705 5742 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$message'))} arms: [ (case_arm pat_list: [ {(DQ ($ Id.VSub_DollarName '$msg_content')) <Id.Lit_Star '*'> } ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:emit) op: assign_op.Equal rhs: {<1>} spids: [5767] ) ] ) ] spids: [5761 5765 5769 -1] ) ] ) ] spids: [5745 5746 5773 -1] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<test>} {($ Id.VSub_DollarName '$emit')} {<Id.Lit_Equals '='>} {<1>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<test>} {<-n>} {(DQ (${ Id.VSub_Name format))}) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:msg_content) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<log>} {<-n>} {<1>} {<--format> <Id.Lit_Equals '='> (DQ (${ Id.VSub_Name format)) } {(${ Id.VSub_Name squash)} ) ) } spids: [5809] ) ] ) ] spids: [5793 5806] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:msg_content) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} { (DQ ($ Id.VSub_DollarName '$msg_prefix') ) } ) (C {<sed>} {(DQ <'s/,/! /g'>)}) ] negated: F ) ) ($ Id.VSub_DollarName '$msg_content') ) } spids: [5836] ) ] ) ] ) (C {<printf>} {(SQ <'%s\\n'>)} { (DQ ($ Id.VSub_DollarName '$action') <' '> ($ Id.VSub_DollarName '$squash') <' '> ($ Id.VSub_DollarName '$msg_content') ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:used) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$used') ($ Id.VSub_DollarName '$squash') <' '> ) } spids: [5875] ) ] ) ] spids: [5779 5790] ) ] ) ] ) redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_Number '$1') <.sq>)} ) ] ) ] ) 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 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 ) (C {<rm>} {<-f>} {(DQ ($ Id.VSub_Number '$1') <.sq>)} {(DQ ($ Id.VSub_Number '$1') <.rearranged>)} ) ] ) ) (command.ShFunction name: add_exec_commands body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:first) op: assign_op.Equal rhs: {<t>} spids: [5956] ) ] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands:[(C {<read>} {<-r>} {<insn>} {<rest>})]) body: (command.DoGroup children: [ (command.Case to_match: {($ Id.VSub_DollarName '$insn')} arms: [ (case_arm pat_list: [{<pick>}] action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$first'))}) (C {<printf>} {(DQ <'%s'>)} {(DQ ($ Id.VSub_DollarName '$cmd'))}) ] ) ] spids: [5981 5982 6007 -1] ) ] ) (C {<printf>} {(DQ <'%s %s'> <Id.Lit_BadBackslash '\\'> <n>)} {(DQ ($ Id.VSub_DollarName '$insn'))} {(DQ ($ Id.VSub_DollarName '$rest'))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:first) op: assign_op.Equal rhs: (word.Empty) spids: [6030] ) ] ) ] ) ) (C {<printf>} {(DQ <'%s'>)} {(DQ ($ Id.VSub_DollarName '$cmd'))}) ] 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>)} ) ] ) (C {<mv>} {(DQ ($ Id.VSub_Number '$1') <.new>)} {(DQ ($ Id.VSub_Number '$1'))}) ] ) ] ) ) (command.ShFunction name: check_commit_sha body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:badsha) op: assign_op.Equal rhs: {<0>} spids: [6100] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [(C {<test>} {<-z>} {(DQ ($ Id.VSub_Number '$1'))})] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:badsha) op: assign_op.Equal rhs: {<1>} spids: [6118] ) ] ) ] spids: [6104 6115] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:sha1_verif) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<rev-parse>} {<--verify>} {<--quiet>} {($ Id.VSub_Number '$1') <Id.Lit_Other '^'> <Id.Lit_LBrace '{'> <commit> <Id.Lit_RBrace '}'> } ) ) ) } spids: [6125] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [(C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$sha1_verif'))})] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:badsha) op: assign_op.Equal rhs: {<1>} spids: [6159] ) ] ) ] spids: [6145 6156] ) ] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [(C {<test>} {($ Id.VSub_DollarName '$badsha')} {<-ne>} {<0>})] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:line) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<sed>} {<-n>} {<-e>} {(DQ (${ Id.VSub_Number 2) <p>)} {(DQ ($ Id.VSub_Number '$3'))} ) ) ) } spids: [6184] ) ] ) (C {<warn>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<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 '\\$'>) <line> ) } ) ) ) } ) (C {<warn>}) ] spids: [6170 6181] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_DollarName '$badsha')} ) ] ) ) (command.ShFunction name: check_bad_cmd_and_sha body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:retval) op: assign_op.Equal rhs: {<0>} spids: [6252] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:lineno) op: assign_op.Equal rhs: {<0>} spids: [6256] ) ] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands:[(C {<read>} {<-r>} {<command>} {<rest>})]) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:lineno) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName '$lineno')} right: {<Id.Lit_Digits 1>} ) ) } spids: [6274] ) ] ) (command.Case to_match: {($ Id.VSub_DollarName '$command')} arms: [ (case_arm pat_list: [ {(DQ ($ Id.VSub_DollarName '$comment_char')) <Id.Lit_Star '*'>} {(SQ )} {<noop>} {<x>} {<exec>} ] spids: [6294 6307 6314 -1] ) (case_arm pat_list: [{(DQ ($ Id.VSub_DollarName '$cr'))}] spids: [6317 6320 6331 -1] ) (case_arm pat_list: [ {<pick>} {<p>} {<drop>} {<d>} {<reword>} {<r>} {<edit>} {<e>} {<squash>} {<s>} {<fixup>} {<f>} ] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Pipeline children: [ (C {<check_commit_sha>} { (DQ (braced_var_sub token: <Id.VSub_Name rest> suffix_op: (suffix_op.Unary tok: <Id.VOp1_DPercent '%%'> arg_word: {<'[ \t]'> <Id.Lit_Other '*'>} ) ) ) } {(DQ ($ Id.VSub_DollarName '$lineno'))} {(DQ ($ Id.VSub_Number '$1'))} ) ] negated: T ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:retval) op: assign_op.Equal rhs: {<1>} spids: [6387] ) ] ) ] spids: [6360 6384] ) ] ) ] spids: [6334 6357 6394 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:line) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<sed>} {<-n>} {<-e>} {(DQ (${ Id.VSub_Name lineno) <p>)} {(DQ ($ Id.VSub_Number '$1'))} ) ) ) } spids: [6401] ) ] ) (C {<warn>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<eval_gettext>} { (DQ < 'Warning: the command isn\'t recognized in the following line:\n' > <' - '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <line> ) } ) ) ) } ) (C {<warn>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:retval) op: assign_op.Equal rhs: {<1>} spids: [6444] ) ] ) ] spids: [6397 6398 6448 -1] ) ] ) ] ) redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_Number '$1'))} ) ] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_DollarName '$retval')} ) ] ) ) (command.ShFunction name: todo_list_to_sha_list body: (BraceGroup children: [ (command.Pipeline children: [ (C {<git>} {<stripspace>} {<--strip-comments>}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [(C {<read>} {<-r>} {<command>} {<sha1>} {<rest>})] ) body: (command.DoGroup children: [ (command.Case to_match: {($ Id.VSub_DollarName '$command')} arms: [ (case_arm pat_list: [ {(DQ ($ Id.VSub_DollarName '$comment_char')) <Id.Lit_Star '*'>} {(SQ )} {<noop>} {<x>} {(DQ <exec>)} ] spids: [6515 6530 6533 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:long_sha) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple 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 ) ) } spids: [6540] ) ] ) (C {<printf>} {(DQ <'%s'> <Id.Lit_BadBackslash '\\'> <n>)} {(DQ ($ Id.VSub_DollarName '$long_sha'))} ) ] spids: [6536 6537 6570 -1] ) ] ) ] ) ) ] negated: F ) ] ) ) (command.ShFunction name: warn_lines body: (BraceGroup children: [ (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands:[(C {<read>} {<-r>} {<line>})]) body: (command.DoGroup children: [(C {<warn>} {(DQ <' - '> ($ Id.VSub_DollarName '$line'))})] ) ) ] ) ) (command.ShFunction name: checkout_onto body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:GIT_REFLOG_ACTION) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$GIT_REFLOG_ACTION') <': checkout '> ($ Id.VSub_DollarName '$onto_name') ) } spids: [6628] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<output>} {<git>} {<checkout>} {($ Id.VSub_DollarName '$onto')}) (C {<die_abort>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<gettext>} {(DQ <'could not detach HEAD'>)}) ) ) } ) ] ) (C {<git>} {<update-ref>} {<ORIG_HEAD>} {($ Id.VSub_DollarName '$orig_head')}) ] ) ) (command.ShFunction name: get_missing_commit_check_level body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:check_level) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<config>} {<--get>} {<rebase.missingCommitsCheck>}) ) } spids: [6678] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:check_level) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name check_level> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonHyphen ':-'> arg_word: {<ignore>} ) ) } spids: [6690] ) ] ) (command.Pipeline children: [ (C {<printf>} {(SQ <'%s'>)} {(DQ ($ Id.VSub_DollarName '$check_level'))}) (C {<tr>} {(SQ <A-Z>)} {(SQ <a-z>)}) ] negated: F ) ] ) ) (command.ShFunction name: check_todo_list body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:raise_error) op: assign_op.Equal rhs: {<f>} spids: [6747] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:check_level) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<get_missing_commit_check_level>}) ) } spids: [6752] ) ] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$check_level'))} arms: [ (case_arm pat_list: [{<warn>} {<error>}] action: [ (command.Simple 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 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 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 ) (C {<mv>} {(DQ ($ Id.VSub_DollarName '$todo')) <.oldsha1> <Id.Lit_Other '+'>} {(DQ ($ Id.VSub_DollarName '$todo')) <.oldsha1>} ) (command.Simple 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 ) (C {<mv>} {(DQ ($ Id.VSub_DollarName '$todo')) <.newsha1> <Id.Lit_Other '+'>} {(DQ ($ Id.VSub_DollarName '$todo')) <.newsha1>} ) (command.Simple 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 arms: [ (if_arm cond: (condition.Shell commands: [ (C {<test>} {<-s>} {(DQ ($ Id.VSub_DollarName '$todo')) <.miss>}) ] ) action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<test>} {(DQ ($ Id.VSub_DollarName '$check_level'))} {<Id.Lit_Equals '='>} {<error>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:raise_error) op: assign_op.Equal rhs: {<t>} spids: [6929] ) ] ) ] ) (C {<warn>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<gettext>} { (DQ < 'Warning: some commits may have been dropped accidentally.\n' > <'Dropped commits (newer to older):'> ) } ) ) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:opt) op: assign_op.Equal rhs: { (DQ < '--no-walk=sorted --format=oneline --abbrev-commit --stdin' > ) } spids: [6954] ) ] ) (command.Pipeline children: [ (command.Simple 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 ) (C {<warn_lines>}) ] negated: F ) (C {<warn>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<gettext>} { (DQ <'To avoid this message, use '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ) <drop> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'>) <' 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.'> ) } ) ) ) } ) (C {<warn>}) ] spids: [6902 6914] ) ] ) ] spids: [6768 6771 7005 -1] ) (case_arm pat_list:[{<ignore>}] spids:[7008 7009 7012 -1]) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (C {<warn>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<eval_gettext>} { (DQ <'Unrecognized setting '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ) <'check_level for option rebase.missingCommitsCheck. Ignoring.'> ) } ) ) ) } ) ] spids: [7015 7016 7034 -1] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Pipeline children: [(C {<check_bad_cmd_and_sha>} {(DQ ($ Id.VSub_DollarName '$todo'))})] negated: T ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:raise_error) op: assign_op.Equal rhs: {<t>} spids: [7055] ) ] ) ] spids: [7041 7052] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<test>} {($ Id.VSub_DollarName '$raise_error')} {<Id.Lit_Equals '='>} {<t>}) ] ) action: [ (C {<checkout_onto>}) (C {<warn>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<gettext>} { (DQ < 'You can fix this with \'git rebase --edit-todo\' and then run \'git rebase --continue\'.' > ) } ) ) ) } ) (C {<die>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<gettext>} {(DQ <'Or you can abort the rebase with \'git rebase --abort\'.'>)} ) ) ) } ) ] spids: [7063 7074] ) ] ) ] ) ) (command.ShFunction name: git_rebase__interactive body: (BraceGroup children: [ (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$action'))} arms: [ (case_arm pat_list: [{<Id.ControlFlow_Continue continue>}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<git>} {<diff-index>} {<--cached>} {<--quiet>} {<HEAD>} {<-->}) ] ) action: [ (command.AndOr ops: [Id.Op_DPipe Id.Op_DPipe] children: [ (C {<test>} {<Id.KW_Bang '!'>} {<-f>} {(DQ ($ Id.VSub_DollarName '$GIT_DIR')) <'/CHERRY_PICK_HEAD'>} ) (C {<rm>} {(DQ ($ Id.VSub_DollarName '$GIT_DIR')) <'/CHERRY_PICK_HEAD'>} ) (C {<die>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<gettext>} {(DQ <'Could not remove CHERRY_PICK_HEAD'>)}) ) ) } ) ] ) ] spids: [7179 7194] ) ] else_action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Pipeline children: [ (C {<test>} {<-f>} {(DQ ($ Id.VSub_DollarName '$author_script'))}) ] negated: T ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:gpg_sign_opt_quoted) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name gpg_sign_opt> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonPlus ':+'> arg_word: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<rev-parse>} {<--sq-quote>} { (DQ ($ Id.VSub_DollarName '$gpg_sign_opt') ) } ) ) } ) ) } spids: [7258] ) ] ) (C {<die>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<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 '\\$'> ) <'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 '\\$'>) <'gpg_sign_opt_quoted\n'> <'\n'> < 'In both cases, once you\'re done, continue with:\n' > <'\n'> <' git rebase --continue\n'> ) } ) ) ) } ) ] spids: [7242 7255] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<.>} {(DQ ($ Id.VSub_DollarName '$author_script'))}) (C {<die>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<gettext>} { (DQ < 'Error trying to find the author identity to amend commit' > ) } ) ) ) } ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [(C {<test>} {<-f>} {(DQ ($ Id.VSub_DollarName '$amend'))})] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:current_head) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<rev-parse>} {<--verify>} {<HEAD>}) ) } spids: [7345] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<test>} {(DQ ($ Id.VSub_DollarName '$current_head'))} {<Id.Lit_Equals '='>} { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<cat>} {(DQ ($ Id.VSub_DollarName '$amend'))}) ) } ) (C {<die>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<gettext>} { (DQ < 'You have uncommitted changes in your working tree. Please commit them\n' > <'first and then run \'git rebase --continue\' again.'> ) } ) ) ) } ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<do_with_author>} {<git>} {<commit>} {<--amend>} {<--no-verify>} {<-F>} {(DQ ($ Id.VSub_DollarName '$msg'))} {<-e>} { (braced_var_sub token: <Id.VSub_Name gpg_sign_opt> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonPlus ':+'> arg_word: {(DQ ($ Id.VSub_DollarName '$gpg_sign_opt'))} ) ) } ) (C {<die>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<gettext>} {(DQ <'Could not commit staged changes.'>)}) ) ) } ) ] ) ] spids: [7331 7342] ) ] else_action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<do_with_author>} {<git>} {<commit>} {<--no-verify>} {<-F>} {(DQ ($ Id.VSub_DollarName '$msg'))} {<-e>} { (braced_var_sub token: <Id.VSub_Name gpg_sign_opt> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonPlus ':+'> arg_word: {(DQ ($ Id.VSub_DollarName '$gpg_sign_opt'))} ) ) } ) (C {<die>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<gettext>} {(DQ <'Could not commit staged changes.'>)}) ) ) } ) ] ) ] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<test>} {<-r>} {(DQ ($ Id.VSub_DollarName '$state_dir')) <'/stopped-sha'>} ) ] ) action: [ (C {<record_in_rewritten>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<cat>} {(DQ ($ Id.VSub_DollarName '$state_dir')) <'/stopped-sha'>} ) ) ) } ) ] spids: [7487 7499] ) ] ) (C {<require_clean_work_tree>} {(DQ <rebase>)}) (C {<do_rest>}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [7171 7172 7535 -1] ) (case_arm pat_list: [{<skip>}] action: [ (C {<git>} {<rerere>} {<clear>}) (C {<do_rest>}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [7537 7538 7557 -1] ) (case_arm pat_list: [{<edit-todo>}] action: [ (command.Simple 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 ) (C {<mv>} {<-f>} {(DQ ($ Id.VSub_DollarName '$todo')) <.new>} {(DQ ($ Id.VSub_DollarName '$todo'))} ) (C {<collapse_todo_ids>}) (C {<append_todo_help>}) (command.Pipeline children: [ (C {<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'> ) } ) (command.Simple 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 ) ] negated: F ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<git_sequence_editor>} {(DQ ($ Id.VSub_DollarName '$todo'))}) (C {<die>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<gettext>} {(DQ <'Could not execute editor'>)}) ) ) } ) ] ) (C {<expand_todo_ids>}) (command.ControlFlow token:<Id.ControlFlow_Exit exit>) ] spids: [7559 7560 7655 -1] ) ] ) (C {<comment_for_reflog>} {<start>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<test>} {<Id.KW_Bang '!'>} {<-z>} {(DQ ($ Id.VSub_DollarName '$switch_to'))}) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:GIT_REFLOG_ACTION) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$GIT_REFLOG_ACTION') <': checkout '> ($ Id.VSub_DollarName '$switch_to') ) } spids: [7680] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<output>} {<git>} {<checkout>} {(DQ ($ Id.VSub_DollarName '$switch_to'))} {<-->} ) (C {<die>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<eval_gettext>} { (DQ <'Could not checkout '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ) <switch_to> ) } ) ) ) } ) ] ) (C {<comment_for_reflog>} {<start>}) ] spids: [7665 7677] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:orig_head) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<rev-parse>} {<--verify>} {<HEAD>}) ) } spids: [7726] ) ] ) (C {<die>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<gettext>} {(DQ <'No HEAD?'>)}) ) ) } ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<mkdir>} {<-p>} {(DQ ($ Id.VSub_DollarName '$state_dir'))}) (C {<die>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<eval_gettext>} { (DQ <'Could not create temporary '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ) <state_dir> ) } ) ) ) } ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple 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 ) (C {<die>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<gettext>} {(DQ <'Could not mark as interactive'>)}) ) ) } ) ] ) (C {<write_basic_state>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<test>} {<t>} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$preserve_merges'))} ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$rebase_root'))}) ] ) action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<mkdir>} {(DQ ($ Id.VSub_DollarName '$rewritten'))}) (command.ForEach iter_names: [c] iterable: (for_iter.Words words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<merge-base>} {<--all>} {($ Id.VSub_DollarName '$orig_head')} {($ Id.VSub_DollarName '$upstream')} ) ) } ] ) body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple 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 ) (C {<die>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<gettext>} {(DQ <'Could not init rewritten commits'>)} ) ) ) } ) ] ) ] ) ) ] ) ] spids: [7816 7827] ) ] else_action: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DPipe] children: [ (C {<mkdir>} {(DQ ($ Id.VSub_DollarName '$rewritten'))}) (command.Simple 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 ) (C {<die>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<gettext>} {(DQ <'Could not init rewritten commits'>)}) ) ) } ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:merges_option) op: assign_op.Equal rhs: (word.Empty) spids: [7946] ) ] ) ] spids: [7801 7813] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:merges_option) op: assign_op.Equal rhs: {(DQ <'--no-merges --cherry-pick'>)} spids: [7951] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:shorthead) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<rev-parse>} {<--short>} {($ Id.VSub_DollarName '$orig_head')}) ) } spids: [7959] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:shortonto) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<rev-parse>} {<--short>} {($ Id.VSub_DollarName '$onto')}) ) } spids: [7970] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [(C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$rebase_root'))})] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:shortupstream) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<rev-parse>} {<--short>} {($ Id.VSub_DollarName '$upstream')} ) ) } spids: [7998] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:revisions) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$upstream') <Id.Lit_TDot ...> ($ Id.VSub_DollarName '$orig_head') } spids: [8010] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:shortrevisions) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$shortupstream') <..> ($ Id.VSub_DollarName '$shorthead') } spids: [8016] ) ] ) ] spids: [7981 7995] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:revisions) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$onto') <Id.Lit_TDot ...> ($ Id.VSub_DollarName '$orig_head') } spids: [8024] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:shortrevisions) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$shorthead')} spids: [8030] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:format) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<config>} {<--get>} {<rebase.instructionFormat>}) ) } spids: [8035] ) ] ) (command.Pipeline children: [ (C {<git>} {<rev-list>} {($ Id.VSub_DollarName '$merges_option')} {<--format> <Id.Lit_Equals '='> (DQ <'%m%H '> (braced_var_sub token: <Id.VSub_Name format> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonHyphen ':-'> arg_word: {<Id.Lit_Percent '%'> <s>} ) ) ) } {<--reverse>} {<--left-right>} {<--topo-order>} {($ Id.VSub_DollarName '$revisions')} { (braced_var_sub token: <Id.VSub_Name restrict_revision> suffix_op: (suffix_op.Unary tok: <Id.VTest_Plus '+'> arg_word: {<'^'> ($ Id.VSub_DollarName '$restrict_revision')} ) ) } ) (C {<sed>} {<-n>} {(DQ <'s/^>//p'>)}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands:[(C {<read>} {<-r>} {<sha1>} {<rest>})]) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$keep_empty'))}) (C {<is_empty_commit>} {($ Id.VSub_DollarName '$sha1')}) (command.Pipeline children: [ (C {<is_merge_commit>} {($ Id.VSub_DollarName '$sha1')}) ] negated: T ) ] ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:comment_out) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$comment_char') <' '>)} spids: [8142] ) ] ) ] spids: [8114 8139] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:comment_out) op: assign_op.Equal rhs: (word.Empty) spids: [8152] ) ] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<test>} {<t>} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$preserve_merges'))} ) ] ) action: [ (command.Simple 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_action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$rebase_root'))}) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:preserve) op: assign_op.Equal rhs: {<t>} spids: [8215] ) ] ) (command.ForEach iter_names: [p] iterable: (for_iter.Words words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<git>} {<rev-list>} {<--parents>} {<-1>} {($ Id.VSub_DollarName '$sha1')} ) (C {<cut>} {<-d> (SQ <' '>)} {<-s>} {<-f2->}) ] negated: F ) ) } ] ) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<test>} {<-f>} {(DQ ($ Id.VSub_DollarName '$rewritten')) <'/'> ($ Id.VSub_DollarName '$p') } ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:preserve) op: assign_op.Equal rhs: {<f>} spids: [8270] ) ] ) ] spids: [8254 8267] ) ] ) ] ) ) ] spids: [8201 8212] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:preserve) op: assign_op.Equal rhs: {<f>} spids: [8283] ) ] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<test>} {<f>} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$preserve'))} ) ] ) action: [ (C {<touch>} {(DQ ($ Id.VSub_DollarName '$rewritten')) <'/'> ($ Id.VSub_DollarName '$sha1') } ) (command.Simple 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] ) ] ) ] ) ] ) ) ] negated: F ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<test>} {<t>} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName '$preserve_merges'))} ) ] ) action: [ (C {<mkdir>} {(DQ ($ Id.VSub_DollarName '$dropped'))}) (command.Pipeline children: [ (C {<git>} {<rev-list>} {($ Id.VSub_DollarName '$revisions')} {<--left-right>} {<--cherry-pick>} ) (command.Simple 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 ) ] negated: F ) (command.Pipeline children: [ (C {<git>} {<rev-list>} {($ Id.VSub_DollarName '$revisions')}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands:[(C {<read>} {<rev>})]) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<test>} {<-f>} {(DQ ($ Id.VSub_DollarName '$rewritten')) <'/'> ($ Id.VSub_DollarName '$rev') } ) (command.Pipeline children: [ (command.Simple 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 ) ] negated: T ) ] ) ] ) action: [ (command.Pipeline children: [ (C {<git>} {<rev-list>} {<--parents>} {<-1>} {($ Id.VSub_DollarName '$rev')} ) (command.Simple 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 ) ] negated: F ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:sha1) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<rev-list>} {<-1>} {($ Id.VSub_DollarName '$rev')} ) ) } spids: [8514] ) ] ) (command.Sentence child: (command.Simple 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 _> ) (C {<mv>} {(DQ (${ Id.VSub_Name todo) <2>)} {(DQ ($ Id.VSub_DollarName '$todo'))} ) (C {<rm>} {(DQ ($ Id.VSub_DollarName '$rewritten')) <'/'> ($ Id.VSub_DollarName '$rev') } ) ] spids: [8431 8463] ) ] ) ] ) ) ] negated: F ) ] spids: [8348 8360] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<test>} {<-s>} {(DQ ($ Id.VSub_DollarName '$todo'))}) (command.Simple words: [{<echo>} {<noop>}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName '$todo'))} ) ] do_fork: T ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$autosquash'))}) (C {<rearrange_squash>} {(DQ ($ Id.VSub_DollarName '$todo'))}) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$cmd'))}) (C {<add_exec_commands>} {(DQ ($ Id.VSub_DollarName '$todo'))}) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:todocount) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (command.Simple 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 ) (C {<wc>} {<-l>}) ] negated: F ) ) } spids: [8635] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:todocount) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name todocount> suffix_op: (suffix_op.Unary tok: <Id.VOp1_DPound '##'> arg_word: {<Id.Lit_Other '*'> <' '>} ) ) } spids: [8655] ) ] ) (command.Simple 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_span_id: 8712 stdin_parts: [ <'\n'> ($ Id.VSub_DollarName '$comment_char') <' '> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<eval_ngettext>} { (DQ <'Rebase '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ) <'shortrevisions onto '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'shortonto ('> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ) <'todocount command)'> ) } { (DQ <'Rebase '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ) <'shortrevisions onto '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>) <'shortonto ('> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ) <'todocount commands)'> ) } {(DQ ($ Id.VSub_DollarName '$todocount'))} ) ) <'\n'> ] ) ) ] do_fork: T ) (C {<append_todo_help>}) (command.Pipeline children: [ (C {<gettext>} { (DQ <'\n'> <'However, if you remove everything, the rebase will be aborted.\n'> <'\n'> ) } ) (command.Simple 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 ) ] negated: F ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [(C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName '$keep_empty'))})] ) action: [ (command.Simple words: [ {<printf>} {(SQ <'%s\\n'>)} { (DQ ($ Id.VSub_DollarName '$comment_char') <' '> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<gettext>} {(DQ <'Note that empty commits are commented out'>)}) ) ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName '$todo'))} ) ] do_fork: T ) ] spids: [8737 8747] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<has_action>} {(DQ ($ Id.VSub_DollarName '$todo'))}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<2>} ) ] ) (C {<cp>} {(DQ ($ Id.VSub_DollarName '$todo'))} {(DQ ($ Id.VSub_DollarName '$todo')) <.backup>} ) (C {<collapse_todo_ids>}) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<git_sequence_editor>} {(DQ ($ Id.VSub_DollarName '$todo'))}) (C {<die_abort>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<gettext>} {(DQ <'Could not execute editor'>)}) ) ) } ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<has_action>} {(DQ ($ Id.VSub_DollarName '$todo'))}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<2>} ) ] ) (C {<check_todo_list>}) (C {<expand_todo_ids>}) (command.AndOr ops: [Id.Op_DPipe Id.Op_DPipe] children: [ (C {<test>} {<-d>} {(DQ ($ Id.VSub_DollarName '$rewritten'))}) (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$force_rebase'))}) (C {<skip_unnecessary_picks>}) ] ) (C {<checkout_onto>}) (C {<do_rest>}) ] ) ) (C {<git_rebase__interactive>}) ] )