(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: (Token id:Id.Left_DollarParen val:'$(' span_id:261) command_list: (command.CommandList children: [(C {(printf)} {(DQ (Id.Lit_Other '\\') (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: (Token id:Id.VSub_Name val:strategy span_id:273) suffix_op: (suffix_op.Unary op_id: 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 (Token id:Id.Lit_Chars val:'\n' span_id:292) (Token id:Id.Lit_Chars val:'\tfor strategy_opt in ' span_id:293) ) (DQ ($ Id.VSub_DollarName '$strategy_opts')) (SQ (Token id:Id.Lit_Chars val:'\n' span_id:299) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:300) (Token id: Id.Lit_Chars val: '\t\tstrategy_args="$strategy_args -X$(git rev-parse --sq-quote "${strategy_opt#--}")"\n' span_id: 301 ) (Token id:Id.Lit_Chars val:'\tdone\n' span_id:302) ) } ) ] ) (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: (Token id:Id.Left_DollarParen val:'$(' span_id:317) command_list: (command.CommandList children: [ (command.Pipeline children: [ (command.Simple words: [{(git)} {(config)} {(--get)} {(core.commentchar)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'2>' span_id:326) fd: 2 arg_word: {(/dev/null)} ) ] ) (C {(cut)} {(-c1)}) ] negated: F ) ] ) ) } spids: [316] ) ] ) (C {(Id.Lit_Other ':')} { (braced_var_sub token: (Token id:Id.VSub_Name val:comment_char span_id:339) suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonEquals arg_word:{(Id.Lit_Pound '#')}) ) } ) (command.ShFunction name: warn body: (command.BraceGroup children: [ (command.Simple words: [ {(printf)} {(SQ (Token id:Id.Lit_Chars val:'%s\\n' span_id:356))} {(DQ ($ Id.VSub_Star '$*'))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:363) fd: -1 arg_word: {(2)} ) ] ) ] ) ) (command.ShFunction name: commit_message body: (command.BraceGroup children: [ (command.Pipeline children: [ (C {(git)} {(cat-file)} {(commit)} {(DQ ($ Id.VSub_Number '$1'))}) (C {(sed)} {(DQ ('1,/^') (Id.Lit_Other '$') (/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: (command.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: (command.BraceGroup children: [ (command.Simple words: [{(sed)} {(-e)} {(1q)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:471) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$todo'))} ) (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:477) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$done'))} ) ] ) (command.Simple words: [{(sed)} {(-e)} {(1d)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:490) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$todo'))} ) (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:496) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$todo')) (.new)} ) ] ) (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: (arith_expr.ArithWord w: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:521) command_list: (command.CommandList children: [ (command.Pipeline children: [ (command.Simple words: [{(git)} {(stripspace)} {(--strip-comments)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:528) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$done'))} ) ] ) (C {(wc)} {(-l)}) ] negated: F ) ] ) ) } ) ) } spids: [518] ) ] ) (command.Simple words: [{(echo)} {($ Id.VSub_DollarName '$new_count')}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:548) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$msgnum'))} ) ] ) (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: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$new_count')}) right: (arith_expr.ArithWord w: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:560) command_list: (command.CommandList children: [ (command.Pipeline children: [ (command.Simple words: [{(git)} {(stripspace)} {(--strip-comments)}] redirects: [ (redir.Redir op: (Token id: Id.Redir_Less val: '<' span_id: 567 ) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$todo'))} ) ] ) (C {(wc)} {(-l)}) ] negated: F ) ] ) ) } ) ) ) } spids: [554] ) ] ) (command.Simple words: [{(echo)} {($ Id.VSub_DollarName '$total')}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:586) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$end'))} ) ] ) (command.If arms: [ (if_arm cond: [ (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: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:619) ) (new_count/) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:621)) ('total)') ) } ) terminator: (Token id:Id.Op_Semi val:';' span_id:624) ) (C {(printf)} {(DQ (Id.Lit_Other '\\') (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: (command.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.Redir op: (Token id:Id.Redir_Great val:'>' span_id:689) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$todo')) (.new)} ) ] ) ] negated: F ) (command.Simple words: [ {(sed)} {(-e)} {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:700)) (d) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:703) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$done'))} ) (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:708) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$done')) (.new)} ) ] ) (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: (command.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: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:763) ) (squash) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\"' span_id:765)) (", 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.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:781) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$todo'))} ) ] ) ] negated: F ) (command.If arms: [ (if_arm cond: [ (C {(test)} { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:792) command_list: (command.CommandList children: [(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.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:819) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$todo'))} ) ] ) ] 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.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:843) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$todo'))} ) ] ) ] negated: F ) ] ) ] ) ) (command.ShFunction name: make_patch body: (command.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: (Token id:Id.Left_DollarParen val:'$(' span_id:864) command_list: (command.CommandList children: [ (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 (Token id:Id.Lit_Chars val:' ' span_id:892)) (Id.Lit_QMark '?') (Id.Lit_Star '*') (SQ (Token id:Id.Lit_Chars val:' ' span_id:897)) (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 (Token id:Id.Lit_Chars val:' ' span_id:919)) (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.Redir op: (Token id:Id.Redir_Great val:'>' span_id:957) fd: -1 arg_word: {(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.Redir op: (Token id:Id.Redir_Great val:'>' span_id:982) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$msg'))} ) ] ) ] ) (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.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1006) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$author_script'))} ) ] ) ] ) ] ) ) (command.ShFunction name: die_with_patch body: (command.BraceGroup children: [ (command.Simple words: [{(echo)} {(DQ ($ Id.VSub_Number '$1'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1029) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$state_dir')) (/stopped-sha)} ) ] ) (C {(make_patch)} {(DQ ($ Id.VSub_Number '$1'))}) (C {(die)} {(DQ ($ Id.VSub_Number '$2'))}) ] ) ) (command.ShFunction name: exit_with_patch body: (command.BraceGroup children: [ (command.Simple words: [{(echo)} {(DQ ($ Id.VSub_Number '$1'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1067) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$state_dir')) (/stopped-sha)} ) ] ) (C {(make_patch)} {($ Id.VSub_Number '$1')}) (command.Simple words: [{(git)} {(rev-parse)} {(--verify)} {(HEAD)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1088) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$amend'))} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:gpg_sign_opt_quoted) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:gpg_sign_opt span_id:1097) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonPlus arg_word: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1099) command_list: (command.CommandList children: [ (C {(git)} {(rev-parse)} {(--sq-quote)} {(DQ ($ Id.VSub_DollarName '$gpg_sign_opt'))} ) ] ) ) } ) ) } spids: [1095] ) ] ) (C {(warn)} { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1116) command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ('You can amend the commit now, with\n') ('\n') ('\tgit commit --amend ') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:1124)) ('gpg_sign_opt_quoted\n') ('\n') ('Once you are satisfied with your changes, run\n') ('\n') ('\tgit rebase --continue') ) } ) ] ) ) ) } ) (C {(warn)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:1138) arg_word: {($ Id.VSub_Number '$2')} ) ] ) ) (command.ShFunction name: die_abort body: (command.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: (command.BraceGroup children: [ (C {(test)} {(-n)} { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1187) command_list: (command.CommandList children: [ (command.Simple words: [{(git)} {(stripspace)} {(--strip-comments)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:1194) fd: -1 arg_word: {(DQ ($ Id.VSub_Number '$1'))} ) ] ) ] ) ) ) } ) ] ) ) (command.ShFunction name: is_empty_commit body: (command.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: (Token id:Id.Left_DollarParen val:'$(' span_id:1212) command_list: (command.CommandList children: [ (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.Redir op: (Token id:Id.Redir_Great val:'2>' span_id:1229) fd: 2 arg_word: {(/dev/null)} ) ] ) ] ) ) } spids: [1211] ) ] ) (command.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: (Token id:Id.Left_DollarParen val:'$(' span_id:1245) command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:1249) ) ('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: (Token id:Id.Left_DollarParen val:'$(' span_id:1260) command_list: (command.CommandList children: [ (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.Redir op: (Token id:Id.Redir_Great val:'2>' span_id:1278) fd: 2 arg_word: {(/dev/null)} ) ] ) ] ) ) } 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: (command.BraceGroup children: [ (command.Simple words: [ {(git)} {(rev-parse)} {(--verify)} {(--quiet)} {(DQ ($ Id.VSub_Number '$1')) (Id.Lit_Other '^') (2)} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1325) fd: -1 arg_word: {(/dev/null)} ) (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:1328) fd: 2 arg_word: {(1)} ) ] ) ] ) ) (command.ShFunction name: do_with_author body: (command.BraceGroup children: [ (command.Subshell command_list: (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: (command.BraceGroup children: [ (command.If arms: [ (if_arm cond: [(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: (Token id:Id.Left_DollarParen val:'$(' span_id:1394) command_list: (command.CommandList children: [(C {(git)} {(config)} {(sequence.editor)})] ) ) ) } spids: [1392] ) ] ) (command.If arms: [ (if_arm cond: [ (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: (Token id: Id.Left_DollarParen val: '$(' span_id: 1422 ) command_list: (command.CommandList children: [ (C {(git)} {(Id.KW_Var var)} {(GIT_EDITOR)}) ] ) ) ) } spids: [1420] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:1433) arg_word: {($ Id.VSub_QMark '$?')} ) ] ) ] spids: [1404 1417] ) ] ) ] spids: [1378 1389] ) ] ) (C {(eval)} {(DQ ($ Id.VSub_DollarName '$GIT_SEQUENCE_EDITOR'))} {(SQ (Token id:Id.Lit_Chars val:'"$@"' span_id:1452))} ) ] ) ) (command.ShFunction name: pick_one body: (command.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: (Token id:Id.Op_Semi val:';' span_id:1484) ) (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: (Token id:Id.Left_DollarParen val:'$(' span_id:1541) command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ('Invalid commit name: ') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:1546) ) (sha1) ) } ) ] ) ) ) } ) ] ) (command.If arms: [ (if_arm cond: [(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: (Token id:Id.ControlFlow_Return val:return span_id:1595) ) ] ) (C {(output)} {(eval)} {(git)} {(cherry-pick)} { (braced_var_sub token: (Token id:Id.VSub_Name val:gpg_sign_opt span_id:1609) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonPlus arg_word: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1611) command_list: (command.CommandList children: [ (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: (Token id:Id.ControlFlow_Return val:return span_id:1677) arg_word: {($ Id.VSub_DollarName '$ret')} ) ] ) ) (command.ShFunction name: pick_one_preserving_merges body: (command.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: (Token id:Id.Left_DollarParen val:'$(' span_id:1735) command_list: (command.CommandList children: [(C {(git)} {(rev-parse)} {($ Id.VSub_DollarName '$sha1')})] ) ) } spids: [1734] ) ] ) (command.If arms: [ (if_arm cond: [ (C {(test)} {(-f)} {(DQ ($ Id.VSub_DollarName '$state_dir')) (/current-commit)}) ] action: [ (command.If arms: [ (if_arm cond: [ (C {(test)} {(DQ ($ Id.VSub_DollarName '$fast_forward'))} {(Id.Lit_Equals '=')} {(t)} ) ] action: [ (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:1776) cond: [(C {(read)} {(current_commit)})] body: (command.DoGroup children: [ (command.Simple words: [{(git)} {(rev-parse)} {(HEAD)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1792) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$rewritten')) (/) ($ Id.VSub_DollarName '$current_commit') } ) ] ) ] ) redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:1803) fd: -1 arg_word: {(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: (Token id: Id.Left_DollarParen val: '$(' span_id: 1823 ) command_list: (command.CommandList children: [ (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.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:1844) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$state_dir')) (/current-commit)} ) ] ) (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: (Token id:Id.Left_DollarParen val:'$(' span_id:1863) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(git)} {(rev-list)} {(--parents)} {(-1)} {($ Id.VSub_DollarName '$sha1')} ) (C {(cut)} {(-d) (SQ (Token id:Id.Lit_Chars val:' ' span_id:1880))} {(-s)} {(-f2-)} ) ] negated: F ) ] ) ) ) } spids: [1860] ) ] ) (command.If arms: [ (if_arm cond: [ (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: (Token id:Id.KW_While val:while span_id:1917) cond: [ (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: (Token id:Id.Left_DollarParen val:'$(' span_id:1938) command_list: (command.CommandList children: [ (C {(expr)} {(DQ ($ Id.VSub_DollarName '$pend'))} {(Id.Lit_Other ':')} {(SQ (Token id:Id.Lit_Chars val:' \\([^ ]*\\)' span_id:1948))} ) ] ) ) } spids: [1937] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:pend) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:pend span_id:1956) suffix_op: (suffix_op.Unary op_id: Id.VOp1_Pound arg_word: {(' ') ($ Id.VSub_DollarName '$p')} ) ) ) } spids: [1953] ) ] ) (command.If arms: [ (if_arm cond: [ (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: (Token id: Id.Left_DollarParen val: '$(' span_id: 1982 ) command_list: (command.CommandList children: [ (C {(cat)} {(DQ ($ Id.VSub_DollarName '$rewritten')) (/) ($ Id.VSub_DollarName '$p') } ) ] ) ) } spids: [1981] ) ] ) (command.If arms: [ (if_arm cond: [(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: (Token id: Id.Left_DollarParen val: '$(' span_id: 2021 ) command_list: (command.CommandList children: [(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: [ (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: (Token id: Id.Left_DollarParen val: '$(' span_id: 2113 ) command_list: (command.CommandList children: [ (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: (Token id:Id.Left_DollarParen val:'$(' span_id:2183) command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ('Fast-forward to ') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:2188) ) (sha1) ) } ) ] ) ) ) } ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(output)} {(git)} {(reset)} {(--hard)} {($ Id.VSub_DollarName '$sha1')}) (C {(die)} { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2211) command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ('Cannot fast-forward to ') (word_part.EscapedLiteral token: (Token id: Id.Lit_EscapedChar val: '\\$' span_id: 2216 ) ) (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: (Token id:Id.Left_DollarParen val:'$(' span_id:2231) command_list: (command.CommandList children: [ (C {(expr)} {(DQ ($ Id.VSub_DollarName '$new_parents'))} {(Id.Lit_Other ':')} {(SQ (Token id:Id.Lit_Chars val:' \\([^ ]*\\)' span_id:2241))} ) ] ) ) } spids: [2230] ) ] ) (command.If arms: [ (if_arm cond: [ (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.Redir op: (Token id:Id.Redir_Great val:'2>' span_id:2280) fd: 2 arg_word: {(/dev/null)} ) ] ) (C {(die)} { (DQ (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 2290 ) command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ('Cannot move HEAD to ') (word_part.EscapedLiteral token: (Token id: Id.Lit_EscapedChar val: '\\$' span_id: 2295 ) ) (first_parent) ) } ) ] ) ) ) } ) ] ) ] spids: [2247 2265] ) ] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$new_parents'))} arms: [ (case_arm pat_list: [ {(SQ (Token id:Id.Lit_Chars val:' ' span_id:2316)) (Id.Lit_Star '*') (SQ (Token id:Id.Lit_Chars val:' ' span_id:2320)) (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: (Token id: Id.Left_DollarParen val: '$(' span_id: 2342 ) command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ('Refusing to squash a merge: ') (word_part.EscapedLiteral token: (Token id: Id.Lit_EscapedChar val: '\\$' span_id: 2347 ) ) (sha1) ) } ) ] ) ) ) } ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:author_script_content) op: assign_op.Equal rhs: { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 2360 ) command_list: (command.CommandList children: [ (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: (Token id: Id.Left_DollarParen val: '$(' span_id: 2376 ) command_list: (command.CommandList children: [ (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: (Token id:Id.VSub_Name val:new_parents span_id:2390) suffix_op: (suffix_op.Unary op_id: 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: [ (command.Pipeline children: [ (C {(do_with_author)} {(output)} {(eval)} { (SQ (Token id: Id.Lit_Chars val: 'git merge ${gpg_sign_opt:+"$gpg_sign_opt"} \\\n' span_id: 2416 ) (Token id: Id.Lit_Chars val: '\t\t\t\t$merge_args $strategy_args -m "$msg_content" $new_parents' span_id: 2417 ) ) } ) ] negated: T ) ] action: [ (command.Simple words: [ {(printf)} {(DQ ('%s') (Id.Lit_Other '\\') (n))} {(DQ ($ Id.VSub_DollarName '$msg_content'))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:2436) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$GIT_DIR')) (/MERGE_MSG)} ) ] ) (C {(die_with_patch)} {($ Id.VSub_DollarName '$sha1')} { (DQ (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 2449 ) command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ('Error redoing merge ') (word_part.EscapedLiteral token: (Token id: Id.Lit_EscapedChar val: '\\$' span_id: 2454 ) ) (sha1) ) } ) ] ) ) ) } ) ] spids: [2403 2421] ) ] ) (command.Simple words: [ {(echo)} { (DQ ($ Id.VSub_DollarName '$sha1') (' ') (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 2469 ) command_list: (command.CommandList children: [ (C {(git)} {(rev-parse)} {(HEAD) (Id.Lit_Other '^') (0)}) ] ) ) ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:2480) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$rewritten_list'))} ) ] ) ] 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: (Token id:Id.VSub_Name val:gpg_sign_opt span_id:2505) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonPlus arg_word: { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 2507 ) command_list: (command.CommandList children: [ (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: (Token id: Id.Left_DollarParen val: '$(' span_id: 2538 ) command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ('Could not pick ') (word_part.EscapedLiteral token: (Token id: Id.Lit_EscapedChar val: '\\$' span_id: 2543 ) ) (sha1) ) } ) ] ) ) ) } ) ] ) ] spids: [2490 2491 2550 -1] ) ] ) ] spids: [2226 2227 2556 -1] ) ] ) ] ) ) (command.ShFunction name: this_nth_commit_message body: (command.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: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:2580) ) ('{n}:') ) } ) ] ) ) (command.ShFunction name: skip_nth_commit_message body: (command.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: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:2603) ) ('{n} will be skipped:') ) } ) ] ) ) (command.ShFunction name: update_squash_messages body: (command.BraceGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(test)} {(-f)} {(DQ ($ Id.VSub_DollarName '$squash_msg'))}) terminator: (Token id:Id.Op_Semi val:';' span_id:2627) ) ] 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: (Token id:Id.ControlFlow_Exit val:exit span_id:2645) ) ] ) (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: (arith_expr.ArithWord w: { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 2650 ) command_list: (command.CommandList children: [ (command.Simple words: [ {(sed)} {(-n)} {(-e)} { (DQ ('1s/^') ($ Id.VSub_DollarName '$comment_char') ('.*') (Id.Lit_Other '\\') ('([0-9][0-9]*') (Id.Lit_Other '\\') (').*/') (Id.Lit_Other '\\') (1/p) ) } {(-e)} {(DQ (q))} ] redirects: [ (redir.Redir op: (Token id: Id.Redir_Less val: '<' span_id: 2679 ) fd: -1 arg_word: { (DQ ($ Id.VSub_DollarName '$squash_msg') ) (.bak) } ) ] ) ] ) ) } ) right: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)}) ) ) } spids: [2648] ) ] ) (command.BraceGroup children: [ (C {(printf)} {(SQ (Token id:Id.Lit_Chars val:'%s\\n' span_id:2698))} { (DQ ($ Id.VSub_DollarName '$comment_char') (' ') (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2704) command_list: (command.CommandList children: [ (C {(eval_ngettext)} { (DQ ('This is a combination of ') (word_part.EscapedLiteral token: (Token id: Id.Lit_EscapedChar val: '\\$' span_id: 2711 ) ) ('count commit.') ) } { (DQ ('This is a combination of ') (word_part.EscapedLiteral token: (Token id: Id.Lit_EscapedChar val: '\\$' span_id: 2719 ) ) ('count commits.') ) } {($ Id.VSub_DollarName '$count')} ) ] ) ) ) } ) (command.Simple words: [ {(sed)} {(-e)} {(1d)} {(-e)} { (SQ (Token id:Id.Lit_Chars val:'2,/^./{\n' span_id:2739) (Token id: Id.Lit_Chars val: '\t\t\t\t/^$/d\n' span_id: 2740 ) (Token id:Id.Lit_Chars val:'\t\t\t}' span_id:2741) ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:2744) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$squash_msg')) (.bak)} ) ] ) ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:2753) fd: -1 arg_word: {(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.Redir op: (Token id:Id.Redir_Great val:'>' span_id:2766) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$fixup_msg'))} ) ] ) (C {(die)} { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2777) command_list: (command.CommandList children: [ (C {(gettext)} { (DQ ('Cannot write ') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:2782) ) (fixup_msg) ) } ) ] ) ) ) } ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:count) op: assign_op.Equal rhs: {(2)} spids: [2789] ) ] ) (command.BraceGroup children: [ (C {(printf)} {(SQ (Token id:Id.Lit_Chars val:'%s\\n' span_id:2799))} { (DQ ($ Id.VSub_DollarName '$comment_char') (' ') (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2805) command_list: (command.CommandList children: [ (C {(gettext)} {(DQ ('This is a combination of 2 commits.'))}) ] ) ) ) } ) (C {(printf)} {(SQ (Token id:Id.Lit_Chars val:'%s\\n' span_id:2818))} { (DQ ($ Id.VSub_DollarName '$comment_char') (' ') (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2824) command_list: (command.CommandList children: [(C {(gettext)} {(DQ ('This is the 1st commit message:'))})] ) ) ) } ) (C {(echo)}) (C {(cat)} {(DQ ($ Id.VSub_DollarName '$fixup_msg'))}) ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:2846) fd: -1 arg_word: {(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 (Token id:Id.Lit_Chars val:'%s\\n' span_id:2881))} { (DQ ($ Id.VSub_DollarName '$comment_char') (' ') (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2887) command_list: (command.CommandList children: [ (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 (Token id:Id.Lit_Chars val:'%s\\n' span_id:2916))} { (DQ ($ Id.VSub_DollarName '$comment_char') (' ') (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2922) command_list: (command.CommandList children: [ (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 (Token id:Id.Lit_Chars val:'s/ /\t/' span_id:2956))}) ] negated: F ) ] spids: [2906 2907 2960 -1] ) ] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:2965) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$squash_msg'))} ) ] ) ] ) ) (command.ShFunction name: peek_next_command body: (command.BraceGroup children: [ (command.Pipeline children: [ (command.Simple words: [{(git)} {(stripspace)} {(--strip-comments)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:2987) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$todo'))} ) ] ) (C {(sed)} {(-n)} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'s/ .*//p' span_id:3001))} {(-e)} {(q)} ) ] negated: F ) ] ) ) (command.ShFunction name: die_failed_squash body: (command.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: (Token id:Id.ControlFlow_Exit val:exit span_id:3056) ) ] ) (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: (Token id:Id.ControlFlow_Exit val:exit span_id:3081) ) ] ) (C {(warn)}) (C {(warn)} { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3090) command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ('Could not apply ') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:3095) ) ('sha1... ') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:3097)) (rest) ) } ) ] ) ) ) } ) (C {(die_with_patch)} {($ Id.VSub_DollarName '$sha1')} {(DQ )}) ] ) ) (command.ShFunction name: flush_rewritten_pending body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(test)} {(-s)} {(DQ ($ Id.VSub_DollarName '$rewritten_pending'))}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:3131) ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:newsha1) op: assign_op.Equal rhs: { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3136) command_list: (command.CommandList children: [(C {(git)} {(rev-parse)} {(HEAD) (Id.Lit_Other '^') (0)})] ) ) ) } spids: [3134] ) ] ) (command.Simple words: [ {(sed)} {(DQ (s/) (Id.Lit_Other '$') ('/ ') ($ Id.VSub_DollarName '$newsha1') (/))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:3158) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$rewritten_pending'))} ) (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:3164) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$rewritten_list'))} ) ] ) (C {(rm)} {(-f)} {(DQ ($ Id.VSub_DollarName '$rewritten_pending'))}) ] ) ) (command.ShFunction name: record_in_rewritten body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:oldsha1) op: assign_op.Equal rhs: { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3191) command_list: (command.CommandList children: [(C {(git)} {(rev-parse)} {($ Id.VSub_Number '$1')})] ) ) ) } spids: [3189] ) ] ) (command.Simple words: [{(echo)} {(DQ ($ Id.VSub_DollarName '$oldsha1'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:3207) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$rewritten_pending'))} ) ] ) (command.Case to_match: { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3218) command_list: (command.CommandList children:[(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: (command.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: [ (C {(test)} { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3275) command_list: (command.CommandList children: [(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: (Token id:Id.VSub_Name val:gpg_sign_opt span_id:3385) suffix_op: (suffix_op.Unary op_id: 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: (Token id:Id.Left_DollarParen val:'$(' span_id:3400) command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ('Could not apply ') (word_part.EscapedLiteral token: (Token id: Id.Lit_EscapedChar val: '\\$' span_id: 3405 ) ) ('sha1... ') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:3407)) (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: (Token id:Id.Left_DollarParen val:'$(' span_id:3429) command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ('Could not apply ') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:3434) ) ('sha1... ') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:3436)) (rest) ) } ) ] ) ) ) } ) ] ) ] ) ] ) ) (command.ShFunction name: do_next body: (command.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: (Token id:Id.ControlFlow_Exit val:exit span_id:3479) ) ] ) (command.Simple words: [{(read)} {(-r)} {(command)} {(sha1)} {(rest)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:3492) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$todo'))} ) ] ) (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: (Token id:Id.VSub_Name val:gpg_sign_opt span_id:3611) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonPlus arg_word: {(DQ ($ Id.VSub_DollarName '$gpg_sign_opt'))} ) ) } ) (command.BraceGroup children: [ (C {(warn)} { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3626) command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ( 'Could not amend commit after successfully picking ' ) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:3632)) ('sha1... ') (word_part.EscapedLiteral token: (Token id: Id.Lit_EscapedChar val: '\\$' span_id: 3634 ) ) ('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: (Token id:Id.Left_DollarParen val:'$(' span_id:3687) command_list: (command.CommandList children: [ (C {(git)} {(rev-parse)} {(--short)} {($ Id.VSub_DollarName '$sha1')} ) ] ) ) } spids: [3686] ) ] ) (C {(warn)} { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3701) command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ('Stopped at ') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:3706) ) ('sha1_abbrev... ') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:3708) ) (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: (Token id:Id.Left_DollarParen val:'$(' span_id:3801) command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ("Cannot '") (word_part.EscapedLiteral token: (Token id: Id.Lit_EscapedChar val: '\\$' span_id: 3806 ) ) ("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: (Token id:Id.Left_DollarParen val:'$(' span_id:3825) command_list: (command.CommandList children: [(C {(get_author_ident_from_commit)} {(HEAD)})] ) ) } spids: [3824] ) ] ) (command.Simple words: [{(echo)} {(DQ ($ Id.VSub_DollarName '$author_script_content'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:3838) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$author_script'))} ) ] ) (C {(eval)} {(DQ ($ Id.VSub_DollarName '$author_script_content'))}) (command.If arms: [ (if_arm cond: [ (command.Pipeline children: [(C {(pick_one)} {(-n)} {($ Id.VSub_DollarName '$sha1')})] negated: T ) ] action: [ (command.Simple words: [{(git)} {(rev-parse)} {(--verify)} {(HEAD)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:3874) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$amend'))} ) ] ) (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: (Token id:Id.Left_DollarParen val:'$(' span_id:3895) command_list: (command.CommandList children: [(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: (Token id:Id.VSub_Name val:gpg_sign_opt span_id:3942) suffix_op: (suffix_op.Unary op_id: 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: [(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: (Token id: Id.VSub_Name val: gpg_sign_opt span_id: 4005 ) suffix_op: (suffix_op.Unary op_id: 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: (Token id:Id.ControlFlow_Exit val:exit span_id:4040) ) ] ) (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: (Token id: Id.VSub_Name val: gpg_sign_opt span_id: 4075 ) suffix_op: (suffix_op.Unary op_id: 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.Redir op: (Token id:Id.Redir_Less val:'<' span_id:4140) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$todo'))} ) ] ) (C {(mark_action_done)}) (C {(eval_gettextln)} { (DQ ('Executing: ') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:4154) ) (rest) ) } ) (C { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:SHELL span_id:4161) suffix_op: (suffix_op.Unary op_id: 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 command_list: (command.CommandList children: [ (command.Simple words: [{(require_clean_work_tree)} {(DQ (rebase))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'2>' span_id:4196) fd: 2 arg_word: {(/dev/null)} ) ] ) ] ) ) (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: [(C {(test)} {(DQ ($ Id.VSub_DollarName '$status'))} {(-ne)} {(0)})] action: [ (C {(warn)} { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:4225) command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ('Execution failed: ') (word_part.EscapedLiteral token: (Token id: Id.Lit_EscapedChar val: '\\$' span_id: 4230 ) ) (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: (Token id: Id.Left_DollarParen val: '$(' span_id: 4253 ) command_list: (command.CommandList children: [ (C {(gettext)} { (DQ ( 'and made changes to the index and/or the working tree' ) ) } ) ] ) ) ) } ) ] ) (C {(warn)} { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:4267) command_list: (command.CommandList children: [ (C {(gettext)} { (DQ ('You can fix the problem, and then run\n') ('\n') ('\tgit rebase --continue') ) } ) ] ) ) ) } ) (C {(warn)}) (command.If arms: [ (if_arm cond: [ (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: (Token id:Id.ControlFlow_Exit val:exit span_id:4307) arg_word: {(DQ ($ Id.VSub_DollarName '$status'))} ) ] spids: [4206 4219] ) (if_arm cond: [ (C {(test)} {(DQ ($ Id.VSub_DollarName '$dirty'))} {(Id.Lit_Equals '=')} {(t)} ) ] action: [ (C {(warn)} { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:4337) command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ('Execution succeeded: ') (word_part.EscapedLiteral token: (Token id: Id.Lit_EscapedChar val: '\\$' span_id: 4343 ) ) ('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: (Token id:Id.ControlFlow_Exit val:exit span_id:4357) 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: (Token id:Id.Left_DollarParen val:'$(' span_id:4375) command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ('Unknown command: ') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:4380) ) ('command ') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:4382)) ('sha1 ') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:4384)) (rest) ) } ) ] ) ) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fixtodo) op: assign_op.Equal rhs: { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:4393) command_list: (command.CommandList children: [ (C {(gettext)} {(DQ ("Please fix this using 'git rebase --edit-todo'."))} ) ] ) ) ) } spids: [4391] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Simple words: [ {(git)} {(rev-parse)} {(--verify)} {(-q)} {(DQ ($ Id.VSub_DollarName '$sha1'))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:4417) fd: -1 arg_word: {(/dev/null)} ) ] ) ] 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: (Token id:Id.ControlFlow_Return val:return span_id:4462) ) ] ) (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: (Token id:Id.Left_DollarParen val:'$(' span_id:4474) command_list: (command.CommandList children: [(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] ) ] ) (command.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)} ) ] ) ] ) (command.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.Redir op: (Token id:Id.Redir_Less val:'<' span_id:4612) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$rewritten_list'))} ) ] ) (C {(true)}) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:hook) op: assign_op.Equal rhs: { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:4634) command_list: (command.CommandList children: [ (C {(git)} {(rev-parse)} {(--git-path)} {(hooks/post-rewrite)}) ] ) ) ) } spids: [4632] ) ] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.If arms: [ (if_arm cond: [ (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: (Token id:Id.Op_Semi val:';' span_id:4665) ) ] action: [ (command.Simple words: [{(DQ ($ Id.VSub_DollarName '$hook'))} {(rebase)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:4676) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$rewritten_list'))} ) ] ) (C {(true)}) ] spids: [4646 4667] ) ] ) (C {(warn)} { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:4697) command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ('Successfully rebased and updated ') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:4702) ) (head_name.) ) } ) ] ) ) ) } ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:4710) arg_word: {(1)} ) ] ) ) (command.ShFunction name: do_rest body: (command.BraceGroup children: [ (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:4731) cond: [(C {(Id.Lit_Other ':')})] body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(do_next)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Break val:break span_id:4743) ) ] ) ] ) ) ] ) ) (command.ShFunction name: skip_unnecessary_picks body: (command.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: (Token id:Id.KW_While val:while span_id:4766) cond: [(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: (Token id:Id.VSub_Name val:rest span_id:4811) suffix_op: (suffix_op.Unary op_id: Id.VOp1_DPercent arg_word: {(' *')} ) ) } spids: [4809] ) ] ) (command.Case to_match: { (DQ (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 4820 ) command_list: (command.CommandList children: [ (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: [4846] ) ] ) ] spids: [4839 4843 4850 -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: [4857] ) ] ) ] spids: [4853 4854 4861 -1] ) ] ) ] spids: [4795 4802 4867 -1] ) (case_arm pat_list: [ {(3) (Id.Lit_Comma ',') (DQ ($ Id.VSub_DollarName '$comment_char')) (Id.Lit_Star '*') } {(3) (Id.Lit_Comma ',')} ] spids: [4870 4879 4886 -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: [4893] ) ] ) ] spids: [4889 4890 4897 -1] ) ] ) (command.Simple words: [ {(printf)} {(SQ (Token id:Id.Lit_Chars val:'%s\\n' span_id:4906))} { (DQ ($ Id.VSub_DollarName '$command') (braced_var_sub token: (Token id:Id.VSub_Name val:rest span_id:4912) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonPlus arg_word: {(' ')} ) ) ($ Id.VSub_DollarName '$rest') ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:4919) fd: -1 arg_word: {($ Id.VSub_DollarName '$fd')} ) ] ) ] ) redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:4925) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$todo'))} ) (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:4930) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$todo') (.new))} ) (redir.Redir op: (Token id:Id.Redir_DGreat val:'3>>' span_id:4936) fd: 3 arg_word: {(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: (Token id:Id.Left_DollarParen val:'$(' span_id:4963) command_list: (command.CommandList children:[(C {(peek_next_command)})]) ) ) } arms: [ (case_arm pat_list: [{(squash)} {(s)} {(fixup)} {(f)}] action: [(C {(record_in_rewritten)} {(DQ ($ Id.VSub_DollarName '$onto'))})] spids: [4971 4978 4988 -1] ) ] ) (C {(die)} { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:4999) command_list: (command.CommandList children: [ (C {(gettext)} {(DQ ('Could not skip unnecessary pick commands'))}) ] ) ) ) } ) ] ) ] ) ) (command.ShFunction name: transform_todo_ids body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:5019) cond: [(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: [5042 5050 5061 -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: (Token id: Id.Left_DollarParen val: '$(' span_id: 5069 ) command_list: (command.CommandList children: [ (C {(git)} {(rev-parse)} {(--verify)} {(--quiet)} {(DQ ($ Id.VSub_At '$@'))} { (braced_var_sub token: (Token id: Id.VSub_Name val: rest span_id: 5083 ) suffix_op: (suffix_op.Unary op_id: Id.VOp1_DPercent arg_word: {('[\t ]*')} ) ) } ) ] ) ) } spids: [5068] ) ] ) (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: (Token id: Id.VSub_Name val: rest span_id: 5097 ) suffix_op: (suffix_op.Unary op_id: Id.VOp1_Pound arg_word: {('*[\t ]')} ) ) ) } spids: [5092] ) ] ) ] ) ] spids: [5064 5065 5104 -1] ) ] ) (C {(printf)} {(SQ (Token id:Id.Lit_Chars val:'%s\\n' span_id:5113))} { (DQ ($ Id.VSub_DollarName '$command') (braced_var_sub token: (Token id:Id.VSub_Name val:rest span_id:5119) suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonPlus arg_word:{(' ')}) ) ($ Id.VSub_DollarName '$rest') ) } ) ] ) redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:5129) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$todo'))} ) (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:5134) fd: -1 arg_word: {(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: (command.BraceGroup children:[(C {(transform_todo_ids)})]) ) (command.ShFunction name: collapse_todo_ids body: (command.BraceGroup children:[(C {(transform_todo_ids)} {(--short)})]) ) (command.ShFunction name: rearrange_squash body: (command.BraceGroup children: [ (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:5221) cond: [(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: (Token id:Id.Left_DollarParen val:'$(' span_id:5250) command_list: (command.CommandList children: [ (C {(git)} {(log)} {(-n)} {(1)} {(--format) (Id.Lit_Equals '=') (DQ ('%s'))} {(${ Id.VSub_Name sha1)} ) ] ) ) } spids: [5249] ) ] ) ] ) (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: (Token id:Id.VSub_Name val:message span_id:5295) suffix_op: (suffix_op.Unary op_id: Id.VOp1_DPercent arg_word: {('!*')} ) ) ) } spids: [5292] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:rest) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$message')} spids: [5302] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:prefix) op: assign_op.Equal rhs: (word.Empty) spids: [5306] ) ] ) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:5313) cond: [(C {(Id.Lit_Other ':')})] 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: (Token id: Id.VSub_Name val: rest span_id: 5346 ) suffix_op: (suffix_op.Unary op_id: Id.VOp1_DPercent arg_word: {('!*')} ) ) (',') ) } spids: [5342] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:rest) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: (Token id: Id.VSub_Name val: rest span_id: 5357 ) suffix_op: (suffix_op.Unary op_id: Id.VOp1_Pound arg_word: {('*! ')} ) ) ) } spids: [5354] ) ] ) ] spids: [5330 5339 5364 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (command.ControlFlow token: (Token id: Id.ControlFlow_Break val: break span_id: 5371 ) ) ] spids: [5367 5368 5374 -1] ) ] ) ] ) ) (C {(printf)} {(SQ (Token id:Id.Lit_Chars val:'%s %s %s %s\\n' span_id:5386))} {(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: [ (command.Sentence child: (C {(test)} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:rest span_id:5424) suffix_op: (suffix_op.Unary op_id: Id.VOp1_Pound arg_word: {('* ')} ) ) ) } {(Id.Lit_Equals '=')} {(DQ ($ Id.VSub_DollarName '$rest'))} ) terminator: (Token id:Id.Op_Semi val:';' span_id:5435) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fullsha) op: assign_op.Equal rhs: { (DQ (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 5442 ) command_list: (command.CommandList children: [ (command.Simple words: [ {(git)} {(rev-parse)} {(-q)} {(--verify)} {(DQ ($ Id.VSub_DollarName '$rest'))} ] redirects: [ (redir.Redir op: (Token id: Id.Redir_Great val: '2>' span_id: 5455 ) fd: 2 arg_word: {(/dev/null)} ) ] ) ] ) ) ) } spids: [5440] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$fullsha'))} ) terminator: (Token id:Id.Op_Semi val:';' span_id:5470) ) ] action: [ (C {(echo)} { (DQ ($ Id.VSub_DollarName '$sha1') (' +') ($ Id.VSub_DollarName '$action') (' ') ($ Id.VSub_DollarName '$prefix') (' ') ($ Id.VSub_DollarName '$fullsha') ) } ) ] spids: [5461 5472] ) ] ) ] spids: [5418 5437] ) ] ) ] spids: [5280 5289 -1 5502] ) ] ) ] ) redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:5507) fd: -1 arg_word: {(DQ ($ Id.VSub_Number '$1') (.sq))} ) (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:5513) fd: -1 arg_word: {(DQ ($ Id.VSub_Number '$1'))} ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(test)} {(-s)} {(DQ ($ Id.VSub_Number '$1') (.sq))}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:5530) ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:used) op: assign_op.Equal rhs: (word.Empty) spids: [5534] ) ] ) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:5537) cond: [(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: (Token id:Id.ControlFlow_Continue val:continue span_id:5572) ) ] spids: [5563 5570 5574 -1] ) ] ) (C {(printf)} {(SQ (Token id:Id.Lit_Chars val:'%s\\n' span_id:5583))} { (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: (Token id:Id.Left_DollarParen val:'$(' span_id:5608) command_list: (command.CommandList children: [ (C {(git)} {(log)} {(-n)} {(1)} {(--format) (Id.Lit_Equals '=') (DQ ('%s'))} {(${ Id.VSub_Name sha1)} ) ] ) ) } spids: [5607] ) ] ) ] ) (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: [5629] ) ] ) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:5637) cond: [(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: (Token id: Id.ControlFlow_Continue val: continue span_id: 5674 ) ) ] spids: [5665 5672 5676 -1] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:emit) op: assign_op.Equal rhs: {(0)} spids: [5682] ) ] ) (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: (Token id: Id.VSub_Name val: action span_id: 5703 ) suffix_op: (suffix_op.Unary op_id: Id.VOp1_Pound arg_word: {('+')} ) ) ) } spids: [5700] ) ] ) (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: [5728] ) ] ) ] spids: [5722 5726 5730 -1] ) ] ) ] spids: [5695 5697 5734 -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: [5759] ) ] ) ] spids: [5753 5757 5761 -1] ) ] ) ] spids: [5737 5738 5765 -1] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(test)} {($ Id.VSub_DollarName '$emit')} {(Id.Lit_Equals '=')} {(1)} ) terminator: (Token id:Id.Op_Semi val:';' span_id:5780) ) ] action: [ (command.If arms: [ (if_arm cond: [(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: (Token id: Id.Left_DollarParen val: '$(' span_id: 5802 ) command_list: (command.CommandList children: [ (C {(git)} {(log)} {(-n)} {(1)} {(--format) (Id.Lit_Equals '=') (DQ (${ Id.VSub_Name format)) } {(${ Id.VSub_Name squash)} ) ] ) ) } spids: [5801] ) ] ) ] spids: [5785 5798] ) ] 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: (Token id: Id.Left_DollarParen val: '$(' span_id: 5830 ) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(echo)} { (DQ ($ Id.VSub_DollarName '$msg_prefix' ) ) } ) (C {(sed)} {(DQ ('s/,/! /g'))}) ] negated: F ) ] ) ) ($ Id.VSub_DollarName '$msg_content') ) } spids: [5828] ) ] ) ] ) (C {(printf)} {(SQ (Token id:Id.Lit_Chars val:'%s\\n' span_id:5855))} { (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: [5867] ) ] ) ] spids: [5771 5782] ) ] ) ] ) redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:5880) fd: -1 arg_word: {(DQ ($ Id.VSub_Number '$1') (.sq))} ) ] ) ] ) redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:5889) fd: -1 arg_word: {(DQ ($ Id.VSub_Number '$1') (.rearranged))} ) (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:5895) fd: -1 arg_word: {(DQ ($ Id.VSub_Number '$1'))} ) ] ) (command.Simple words: [{(cat)} {(DQ ($ Id.VSub_Number '$1') (.rearranged))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:5908) fd: -1 arg_word: {(DQ ($ Id.VSub_Number '$1'))} ) ] ) (C {(rm)} {(-f)} {(DQ ($ Id.VSub_Number '$1') (.sq))} {(DQ ($ Id.VSub_Number '$1') (.rearranged))} ) ] ) ) (command.ShFunction name: add_exec_commands body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:first) op: assign_op.Equal rhs: {(t)} spids: [5948] ) ] ) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:5952) cond: [(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: [5973 5974 5999 -1] ) ] ) (C {(printf)} {(DQ ('%s %s') (Id.Lit_Other '\\') (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: [6022] ) ] ) ] ) ) (C {(printf)} {(DQ ('%s'))} {(DQ ($ Id.VSub_DollarName '$cmd'))}) ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:6041) fd: -1 arg_word: {(DQ ($ Id.VSub_Number '$1'))} ) (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:6046) fd: -1 arg_word: {(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: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:badsha) op: assign_op.Equal rhs: {(0)} spids: [6092] ) ] ) (command.If arms: [ (if_arm cond: [(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: [6110] ) ] ) ] spids: [6096 6107] ) ] 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: (Token id:Id.Left_DollarParen val:'$(' span_id:6119) command_list: (command.CommandList children: [ (C {(git)} {(rev-parse)} {(--verify)} {(--quiet)} {($ Id.VSub_Number '$1') (Id.Lit_Other '^') (Id.Lit_LBrace '{') (commit) (Id.Lit_RBrace '}') } ) ] ) ) ) } spids: [6117] ) ] ) (command.If arms: [ (if_arm cond: [(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: [6151] ) ] ) ] spids: [6137 6148] ) ] ) ] ) (command.If arms: [ (if_arm cond: [(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: (Token id:Id.Left_DollarParen val:'$(' span_id:6178) command_list: (command.CommandList children: [ (C {(sed)} {(-n)} {(-e)} {(DQ (${ Id.VSub_Number 2) (p))} {(DQ ($ Id.VSub_Number '$3'))} ) ] ) ) ) } spids: [6176] ) ] ) (C {(warn)} { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:6202) command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ( "Warning: the SHA-1 is missing or isn't a commit in the following line:\n" ) (' - ') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:6209)) (line) ) } ) ] ) ) ) } ) (C {(warn)}) ] spids: [6162 6173] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:6223) arg_word: {($ Id.VSub_DollarName '$badsha')} ) ] ) ) (command.ShFunction name: check_bad_cmd_and_sha body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:retval) op: assign_op.Equal rhs: {(0)} spids: [6244] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:lineno) op: assign_op.Equal rhs: {(0)} spids: [6248] ) ] ) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:6252) cond: [(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: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$lineno')}) right: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)}) ) ) } spids: [6266] ) ] ) (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: [6286 6299 6306 -1] ) (case_arm pat_list: [{(DQ ($ Id.VSub_DollarName '$cr'))}] spids: [6309 6312 6323 -1] ) (case_arm pat_list: [ {(pick)} {(p)} {(drop)} {(d)} {(reword)} {(r)} {(edit)} {(e)} {(squash)} {(s)} {(fixup)} {(f)} ] action: [ (command.If arms: [ (if_arm cond: [ (command.Pipeline children: [ (C {(check_commit_sha)} { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:rest span_id:6360) suffix_op: (suffix_op.Unary op_id: Id.VOp1_DPercent arg_word: {('[ \t]*')} ) ) ) } {(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: [6378] ) ] ) ] spids: [6352 6375] ) ] ) ] spids: [6326 6349 6385 -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: (Token id: Id.Left_DollarParen val: '$(' span_id: 6394 ) command_list: (command.CommandList children: [ (C {(sed)} {(-n)} {(-e)} {(DQ (${ Id.VSub_Name lineno) (p))} {(DQ ($ Id.VSub_Number '$1'))} ) ] ) ) ) } spids: [6392] ) ] ) (C {(warn)} { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:6418) command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ( "Warning: the command isn't recognized in the following line:\n" ) (' - ') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:6425)) (line) ) } ) ] ) ) ) } ) (C {(warn)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:retval) op: assign_op.Equal rhs: {(1)} spids: [6435] ) ] ) ] spids: [6388 6389 6439 -1] ) ] ) ] ) redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:6447) fd: -1 arg_word: {(DQ ($ Id.VSub_Number '$1'))} ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:6453) arg_word: {($ Id.VSub_DollarName '$retval')} ) ] ) ) (command.ShFunction name: todo_list_to_sha_list body: (command.BraceGroup children: [ (command.Pipeline children: [ (C {(git)} {(stripspace)} {(--strip-comments)}) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:6483) cond: [(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: [6506 6521 6524 -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: (Token id: Id.Left_DollarParen val: '$(' span_id: 6532 ) command_list: (command.CommandList children: [ (command.Simple words: [ {(git)} {(rev-list)} {(--no-walk)} {(DQ ($ Id.VSub_DollarName '$sha1'))} ] redirects: [ (redir.Redir op: (Token id: Id.Redir_Great val: '2>' span_id: 6543 ) fd: 2 arg_word: {(/dev/null)} ) ] ) ] ) ) } spids: [6531] ) ] ) (C {(printf)} {(DQ ('%s') (Id.Lit_Other '\\') (n))} {(DQ ($ Id.VSub_DollarName '$long_sha'))} ) ] spids: [6527 6528 6561 -1] ) ] ) ] ) ) ] negated: F ) ] ) ) (command.ShFunction name: warn_lines body: (command.BraceGroup children: [ (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:6583) cond: [(C {(read)} {(-r)} {(line)})] body: (command.DoGroup children: [(C {(warn)} {(DQ (' - ') ($ Id.VSub_DollarName '$line'))})] ) ) ] ) ) (command.ShFunction name: checkout_onto body: (command.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: [6619] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(output)} {(git)} {(checkout)} {($ Id.VSub_DollarName '$onto')}) (C {(die_abort)} { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:6640) command_list: (command.CommandList children: [(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: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:check_level) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:6670) command_list: (command.CommandList children: [(C {(git)} {(config)} {(--get)} {(rebase.missingCommitsCheck)})] ) ) } spids: [6669] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:check_level) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:check_level span_id:6683) suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{(ignore)}) ) } spids: [6681] ) ] ) (command.Pipeline children: [ (C {(printf)} {(SQ (Token id:Id.Lit_Chars val:'%s' span_id:6696))} {(DQ ($ Id.VSub_DollarName '$check_level'))} ) (C {(tr)} {(SQ (Token id:Id.Lit_Chars val:A-Z span_id:6708))} {(SQ (Token id:Id.Lit_Chars val:a-z span_id:6712))} ) ] negated: F ) ] ) ) (command.ShFunction name: check_todo_list body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:raise_error) op: assign_op.Equal rhs: {(f)} spids: [6738] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:check_level) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:6744) command_list: (command.CommandList children: [(C {(get_missing_commit_check_level)})] ) ) } spids: [6743] ) ] ) (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.Redir op: (Token id:Id.Redir_Less val:'<' span_id:6771) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$todo')) (.backup)} ) (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:6777) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$todo')) (.oldsha1)} ) ] ) (command.Simple words: [{(todo_list_to_sha_list)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:6786) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$todo'))} ) (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:6791) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$todo')) (.newsha1)} ) ] ) (command.Simple words: [{(sort)} {(-u)} {(DQ ($ Id.VSub_DollarName '$todo')) (.oldsha1)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:6812) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$todo')) (.oldsha1) (Id.Lit_Other '+')} ) ] ) (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.Redir op: (Token id:Id.Redir_Great val:'>' span_id:6843) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$todo')) (.newsha1) (Id.Lit_Other '+')} ) ] ) (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.Redir op: (Token id:Id.Redir_Great val:'>' span_id:6881) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$todo')) (.miss)} ) ] ) (command.If arms: [ (if_arm cond: [(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: [6920] ) ] ) ] ) (C {(warn)} { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:6928) command_list: (command.CommandList children: [ (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: [6945] ) ] ) (command.Pipeline children: [ (command.Simple words: [{(git)} {(rev-list)} {($ Id.VSub_DollarName '$opt')}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:6957) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$todo')) (.miss)} ) ] ) (C {(warn_lines)}) ] negated: F ) (C {(warn)} { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:6972) command_list: (command.CommandList children: [ (C {(gettext)} { (DQ ('To avoid this message, use ') (word_part.EscapedLiteral token: (Token id: Id.Lit_EscapedChar val: '\\"' span_id: 6978 ) ) (drop) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\"' span_id:6980)) (' 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: [6893 6905] ) ] ) ] spids: [6759 6762 6996 -1] ) (case_arm pat_list:[{(ignore)}] spids:[6999 7000 7003 -1]) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (C {(warn)} { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:7013) command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ('Unrecognized setting ') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:7018) ) ('check_level for option rebase.missingCommitsCheck. Ignoring.') ) } ) ] ) ) ) } ) ] spids: [7006 7007 7025 -1] ) ] ) (command.If arms: [ (if_arm cond: [ (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: [7046] ) ] ) ] spids: [7032 7043] ) ] ) (command.If arms: [ (if_arm cond: [ (C {(test)} {($ Id.VSub_DollarName '$raise_error')} {(Id.Lit_Equals '=')} {(t)}) ] action: [ (C {(checkout_onto)}) (C {(warn)} { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:7091) command_list: (command.CommandList children: [ (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: (Token id:Id.Left_DollarParen val:'$(' span_id:7104) command_list: (command.CommandList children: [ (C {(gettext)} {(DQ ("Or you can abort the rebase with 'git rebase --abort'."))} ) ] ) ) ) } ) ] spids: [7054 7065] ) ] ) ] ) ) (command.ShFunction name: git_rebase__interactive body: (command.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: [(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: (Token id: Id.Left_DollarParen val: '$(' span_id: 7220 ) command_list: (command.CommandList children: [ (C {(gettext)} {(DQ ('Could not remove CHERRY_PICK_HEAD'))} ) ] ) ) ) } ) ] ) ] spids: [7170 7185] ) ] else_action: [ (command.If arms: [ (if_arm cond: [ (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: (Token id: Id.VSub_Name val: gpg_sign_opt span_id: 7251 ) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonPlus arg_word: { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 7253 ) command_list: (command.CommandList children: [ (C {(git)} {(rev-parse)} {(--sq-quote)} { (DQ ($ Id.VSub_DollarName '$gpg_sign_opt' ) ) } ) ] ) ) } ) ) } spids: [7249] ) ] ) (C {(die)} { (DQ (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 7270 ) command_list: (command.CommandList children: [ (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:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:7280)) ('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: (Token id: Id.Lit_EscapedChar val: '\\$' span_id: 7286 ) ) ('gpg_sign_opt_quoted\n') ('\n') ("In both cases, once you're done, continue with:\n") ('\n') (' git rebase --continue\n') ) } ) ] ) ) ) } ) ] spids: [7233 7246] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(.)} {(DQ ($ Id.VSub_DollarName '$author_script'))}) (C {(die)} { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:7312) command_list: (command.CommandList children: [ (C {(gettext)} { (DQ ( 'Error trying to find the author identity to amend commit' ) ) } ) ] ) ) ) } ) ] ) (command.If arms: [ (if_arm cond: [(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: (Token id: Id.Left_DollarParen val: '$(' span_id: 7337 ) command_list: (command.CommandList children: [ (C {(git)} {(rev-parse)} {(--verify)} {(HEAD)}) ] ) ) } spids: [7336] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(test)} {(DQ ($ Id.VSub_DollarName '$current_head'))} {(Id.Lit_Equals '=')} { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 7356 ) command_list: (command.CommandList children: [ (C {(cat)} {(DQ ($ Id.VSub_DollarName '$amend'))}) ] ) ) } ) (C {(die)} { (DQ (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 7370 ) command_list: (command.CommandList children: [ (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: (Token id: Id.VSub_Name val: gpg_sign_opt span_id: 7403 ) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonPlus arg_word: {(DQ ($ Id.VSub_DollarName '$gpg_sign_opt'))} ) ) } ) (C {(die)} { (DQ (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 7416 ) command_list: (command.CommandList children: [ (C {(gettext)} {(DQ ('Could not commit staged changes.'))} ) ] ) ) ) } ) ] ) ] spids: [7322 7333] ) ] 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: (Token id:Id.VSub_Name val:gpg_sign_opt span_id:7448) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonPlus arg_word: {(DQ ($ Id.VSub_DollarName '$gpg_sign_opt'))} ) ) } ) (C {(die)} { (DQ (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 7461 ) command_list: (command.CommandList children: [ (C {(gettext)} {(DQ ('Could not commit staged changes.'))}) ] ) ) ) } ) ] ) ] ) ] ) (command.If arms: [ (if_arm cond: [ (C {(test)} {(-r)} {(DQ ($ Id.VSub_DollarName '$state_dir')) (/stopped-sha)}) ] action: [ (C {(record_in_rewritten)} { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:7496) command_list: (command.CommandList children: [ (C {(cat)} {(DQ ($ Id.VSub_DollarName '$state_dir')) (/stopped-sha)} ) ] ) ) ) } ) ] spids: [7478 7490] ) ] ) (C {(require_clean_work_tree)} {(DQ (rebase))}) (C {(do_rest)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:7521) arg_word: {(0)} ) ] spids: [7162 7163 7526 -1] ) (case_arm pat_list: [{(skip)}] action: [ (C {(git)} {(rerere)} {(clear)}) (C {(do_rest)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:7543) arg_word: {(0)} ) ] spids: [7528 7529 7548 -1] ) (case_arm pat_list: [{(edit-todo)}] action: [ (command.Simple words: [{(git)} {(stripspace)} {(--strip-comments)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:7560) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$todo'))} ) (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:7565) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$todo')) (.new)} ) ] ) (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.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:7610) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$todo'))} ) ] ) ] 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: (Token id:Id.Left_DollarParen val:'$(' span_id:7629) command_list: (command.CommandList children: [(C {(gettext)} {(DQ ('Could not execute editor'))})] ) ) ) } ) ] ) (C {(expand_todo_ids)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:7643) ) ] spids: [7550 7551 7646 -1] ) ] ) (C {(comment_for_reflog)} {(start)}) (command.If arms: [ (if_arm cond: [ (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: [7671] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(output)} {(git)} {(checkout)} {(DQ ($ Id.VSub_DollarName '$switch_to'))} {(--)} ) (C {(die)} { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:7697) command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ('Could not checkout ') (word_part.EscapedLiteral token: (Token id: Id.Lit_EscapedChar val: '\\$' span_id: 7702 ) ) (switch_to) ) } ) ] ) ) ) } ) ] ) (C {(comment_for_reflog)} {(start)}) ] spids: [7656 7668] ) ] ) (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: (Token id:Id.Left_DollarParen val:'$(' span_id:7718) command_list: (command.CommandList children: [(C {(git)} {(rev-parse)} {(--verify)} {(HEAD)})] ) ) } spids: [7717] ) ] ) (C {(die)} { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:7733) command_list: (command.CommandList children: [(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: (Token id:Id.Left_DollarParen val:'$(' span_id:7755) command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ('Could not create temporary ') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:7760) ) (state_dir) ) } ) ] ) ) ) } ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple words: [{(Id.Lit_Other ':')}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:7769) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$state_dir')) (/interactive)} ) ] ) (C {(die)} { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:7781) command_list: (command.CommandList children: [(C {(gettext)} {(DQ ('Could not mark as interactive'))})] ) ) ) } ) ] ) (C {(write_basic_state)}) (command.If arms: [ (if_arm cond: [ (C {(test)} {(t)} {(Id.Lit_Equals '=')} {(DQ ($ Id.VSub_DollarName '$preserve_merges'))} ) ] action: [ (command.If arms: [ (if_arm cond: [(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_name: c iter_words: [ { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 7836 ) command_list: (command.CommandList children: [ (C {(git)} {(merge-base)} {(--all)} {($ Id.VSub_DollarName '$orig_head')} {($ Id.VSub_DollarName '$upstream')} ) ] ) ) } ] do_arg_iter: F body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple words: [{(echo)} {($ Id.VSub_DollarName '$onto')}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:7856) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$rewritten')) (/) ($ Id.VSub_DollarName '$c') } ) ] ) (C {(die)} { (DQ (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 7870 ) command_list: (command.CommandList children: [ (C {(gettext)} { (DQ ('Could not init rewritten commits') ) } ) ] ) ) ) } ) ] ) ] ) ) ] ) ] spids: [7807 7818] ) ] 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.Redir op: (Token id:Id.Redir_Great val:'>' span_id:7899) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$rewritten')) (/root)} ) ] ) (C {(die)} { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:7912) command_list: (command.CommandList children: [ (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: [7937] ) ] ) ] spids: [7792 7804] ) ] 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: [7942] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:shorthead) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:7951) command_list: (command.CommandList children: [ (C {(git)} {(rev-parse)} {(--short)} {($ Id.VSub_DollarName '$orig_head')}) ] ) ) } spids: [7950] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:shortonto) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:7962) command_list: (command.CommandList children: [ (C {(git)} {(rev-parse)} {(--short)} {($ Id.VSub_DollarName '$onto')}) ] ) ) } spids: [7961] ) ] ) (command.If arms: [ (if_arm cond: [(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: (Token id:Id.Left_DollarParen val:'$(' span_id:7990) command_list: (command.CommandList children: [ (C {(git)} {(rev-parse)} {(--short)} {($ Id.VSub_DollarName '$upstream')} ) ] ) ) } spids: [7989] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:revisions) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$upstream') (...) ($ Id.VSub_DollarName '$orig_head') } spids: [8001] ) ] ) (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: [8007] ) ] ) ] spids: [7972 7986] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:revisions) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$onto') (...) ($ Id.VSub_DollarName '$orig_head')} spids: [8015] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:shortrevisions) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$shorthead')} spids: [8021] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:format) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:8027) command_list: (command.CommandList children: [(C {(git)} {(config)} {(--get)} {(rebase.instructionFormat)})] ) ) } spids: [8026] ) ] ) (command.Pipeline children: [ (C {(git)} {(rev-list)} {($ Id.VSub_DollarName '$merges_option')} {(--format) (Id.Lit_Equals '=') (DQ ('%m%H ') (braced_var_sub token: (Token id:Id.VSub_Name val:format span_id:8051) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonHyphen arg_word: {(Id.Lit_Percent '%') (s)} ) ) ) } {(--reverse)} {(--left-right)} {(--topo-order)} {($ Id.VSub_DollarName '$revisions')} { (braced_var_sub token: (Token id:Id.VSub_Name val:restrict_revision span_id:8071) suffix_op: (suffix_op.Unary op_id: Id.VTest_Plus arg_word: {('^') ($ Id.VSub_DollarName '$restrict_revision')} ) ) } ) (C {(sed)} {(-n)} {(DQ ('s/^>//p'))}) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:8091) cond: [(C {(read)} {(-r)} {(sha1)} {(rest)})] body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (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: [8133] ) ] ) ] spids: [8105 8130] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:comment_out) op: assign_op.Equal rhs: (word.Empty) spids: [8143] ) ] ) ] ) (command.If arms: [ (if_arm cond: [ (C {(test)} {(t)} {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(DQ ($ Id.VSub_DollarName '$preserve_merges'))} ) ] action: [ (command.Simple words: [ {(printf)} {(SQ (Token id:Id.Lit_Chars val:'%s\\n' span_id:8170))} { (DQ (${ Id.VSub_Name comment_out) ('pick ') ($ Id.VSub_DollarName '$sha1') (' ') ($ Id.VSub_DollarName '$rest') ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:8183) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$todo'))} ) ] ) ] spids: [8150 8164] ) ] else_action: [ (command.If arms: [ (if_arm cond: [ (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: [8206] ) ] ) (command.ForEach iter_name: p iter_words: [ { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 8216 ) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(git)} {(rev-list)} {(--parents)} {(-1)} {($ Id.VSub_DollarName '$sha1')} ) (C {(cut)} {(-d) (SQ (Token id: Id.Lit_Chars val: ' ' span_id: 8233 ) ) } {(-s)} {(-f2-)} ) ] negated: F ) ] ) ) } ] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (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: [8261] ) ] ) ] spids: [8245 8258] ) ] ) ] ) ) ] spids: [8192 8203] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:preserve) op: assign_op.Equal rhs: {(f)} spids: [8274] ) ] ) ] ) (command.If arms: [ (if_arm cond: [ (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 (Token id:Id.Lit_Chars val:'%s\\n' span_id:8309))} { (DQ (${ Id.VSub_Name comment_out) ('pick ') ($ Id.VSub_DollarName '$sha1') (' ') ($ Id.VSub_DollarName '$rest') ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:8322) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$todo'))} ) ] ) ] spids: [8281 8294] ) ] ) ] ) ] ) ) ] negated: F ) (command.If arms: [ (if_arm cond: [ (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.Redir op: (Token id:Id.Redir_Great val:'>' span_id:8387) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$state_dir')) (/not-cherry-picks)} ) ] ) ] negated: F ) (command.Pipeline children: [ (C {(git)} {(rev-list)} {($ Id.VSub_DollarName '$revisions')}) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:8412) cond: [(C {(read)} {(rev)})] body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (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.Redir op: (Token id: Id.Redir_Great val: '>' span_id: 8450 ) fd: -1 arg_word: {(/dev/null)} ) ] ) ] negated: T ) ] ) ] action: [ (command.Pipeline children: [ (C {(git)} {(rev-list)} {(--parents)} {(-1)} {($ Id.VSub_DollarName '$rev')} ) (command.Simple words: [ {(cut)} {(-d) (SQ (Token id:Id.Lit_Chars val:' ' span_id:8489)) } {(-s)} {(-f2)} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:8496) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$dropped')) (/) ($ Id.VSub_DollarName '$rev') } ) ] ) ] negated: F ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:sha1) op: assign_op.Equal rhs: { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 8506 ) command_list: (command.CommandList children: [ (C {(git)} {(rev-list)} {(-1)} {($ Id.VSub_DollarName '$rev')} ) ] ) ) } spids: [8505] ) ] ) (command.Sentence child: (command.Simple words: [ {(sane_grep)} {(-v)} { (DQ ('^[a-z][a-z]* ') ($ Id.VSub_DollarName '$sha1')) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:8526) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$todo'))} ) (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:8531) fd: -1 arg_word: {(DQ (${ Id.VSub_Name todo) (2))} ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:8540) ) (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: [8422 8454] ) ] ) ] ) ) ] negated: F ) ] spids: [8339 8351] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(test)} {(-s)} {(DQ ($ Id.VSub_DollarName '$todo'))}) (command.Simple words: [{(echo)} {(noop)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:8587) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$todo'))} ) ] ) ] ) (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: (Token id:Id.Left_DollarParen val:'$(' span_id:8627) command_list: (command.CommandList children: [ (command.Pipeline children: [ (command.Simple words: [{(git)} {(stripspace)} {(--strip-comments)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:8634) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$todo'))} ) ] ) (C {(wc)} {(-l)}) ] negated: F ) ] ) ) } spids: [8626] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:todocount) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:todocount span_id:8648) suffix_op: (suffix_op.Unary op_id:Id.VOp1_DPound arg_word:{('* ')}) ) } spids: [8646] ) ] ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:8656) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$todo'))} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:8661) fd: -1 here_begin: {(EOF)} here_end_span_id: 8702 stdin_parts: [ ('\n') ($ Id.VSub_DollarName '$comment_char') (' ') (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:8667) command_list: (command.CommandList children: [ (C {(eval_ngettext)} { (DQ ('Rebase ') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:8674) ) ('shortrevisions onto ') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:8676) ) ('shortonto (') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:8678)) ('todocount command)') ) } { (DQ ('Rebase ') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:8686) ) ('shortrevisions onto ') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:8688) ) ('shortonto (') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:8690)) ('todocount commands)') ) } {(DQ ($ Id.VSub_DollarName '$todocount'))} ) ] ) ) ('\n') ] ) ] ) (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.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:8721) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$todo'))} ) ] ) ] negated: F ) (command.If arms: [ (if_arm cond: [(C {(test)} {(-z)} {(DQ ($ Id.VSub_DollarName '$keep_empty'))})] action: [ (command.Simple words: [ {(printf)} {(SQ (Token id:Id.Lit_Chars val:'%s\\n' span_id:8743))} { (DQ ($ Id.VSub_DollarName '$comment_char') (' ') (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:8749) command_list: (command.CommandList children: [ (C {(gettext)} {(DQ ('Note that empty commits are commented out'))}) ] ) ) ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:8758) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$todo'))} ) ] ) ] spids: [8727 8737] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(has_action)} {(DQ ($ Id.VSub_DollarName '$todo'))}) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:8776) 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: (Token id:Id.Left_DollarParen val:'$(' span_id:8806) command_list: (command.CommandList children: [(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: (Token id:Id.ControlFlow_Return val:return span_id:8825) 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)}) ] )