(List (= scope= flags=0 words=[] bindings=[('todo', {[DQ [VarSub state_dir]] [LIT_CHARS /git-rebase-todo]})]) (= scope= flags=0 words=[] bindings=[('done', {[DQ [VarSub state_dir]] [LIT_CHARS /done]})]) (= scope= flags=0 words=[] bindings=[('msg', {[DQ [VarSub state_dir]] [LIT_CHARS /message]})]) (= scope= flags=0 words=[] bindings=[('squash_msg', {[DQ [VarSub state_dir]] [LIT_CHARS /message-squash]})]) (= scope= flags=0 words=[] bindings=[('fixup_msg', {[DQ [VarSub state_dir]] [LIT_CHARS /message-fixup]})]) (= scope= flags=0 words=[] bindings=[('rewritten', {[DQ [VarSub state_dir]] [LIT_CHARS /rewritten]})]) (= scope= flags=0 words=[] bindings=[('dropped', {[DQ [VarSub state_dir]] [LIT_CHARS /dropped]})]) (= scope= flags=0 words=[] bindings=[('end', {[DQ [VarSub state_dir]] [LIT_CHARS /end]})]) (= scope= flags=0 words=[] bindings=[('msgnum', {[DQ [VarSub state_dir]] [LIT_CHARS /msgnum]})]) (= scope= flags=0 words=[] bindings=[('author_script', {[DQ [VarSub state_dir]] [LIT_CHARS /author-script]})]) (= scope= flags=0 words=[] bindings=[('amend', {[DQ [VarSub state_dir]] [LIT_CHARS /amend]})]) (= scope= flags=0 words=[] bindings=[('rewritten_list', {[DQ [VarSub state_dir]] [LIT_CHARS /rewritten-list]})]) (= scope= flags=0 words=[] bindings=[('rewritten_pending', {[DQ [VarSub state_dir]] [LIT_CHARS /rewritten-pending]})]) (= scope= flags=0 words=[] bindings=[('cr', {[ComSub (Com {[LIT_CHARS printf]} {[DQ [\ LIT_ESCAPED_CHAR "\\0"][LIT_CHARS 15]]})]})]) (= scope= flags=0 words=[] bindings=[('strategy_args', {[VarSub strategy test_op=VS_TEST_COLON_PLUS {[LIT_CHARS "--strategy="] [VarSub strategy]}]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub strategy_opts]]}) (Com {[LIT_CHARS eval]} {[SQ ] [DQ [VarSub strategy_opts]] [SQ ]}) ) (= scope= flags=0 words=[] bindings=[('GIT_CHERRY_PICK_HELP', {[DQ [VarSub resolvemsg]]})]) (= scope= flags=1 words=[{[LIT_CHARS GIT_CHERRY_PICK_HELP]}] bindings=[]) (= scope= flags=0 words=[] bindings=[('comment_char', {[ComSub (Pipeline (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS --get]} {[LIT_CHARS core.commentchar]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -c1]}) )]})]) (Com {[LIT_OTHER ":"]} {[VarSub comment_char test_op=VS_TEST_COLON_EQUALS {[LIT_POUND "#"]}]}) (FunctionDef warn [] (Com {[LIT_CHARS printf]} {[SQ ]} {[DQ [VarSub *]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) ) (FunctionDef commit_message [] (Pipeline (Com {[LIT_CHARS git]} {[LIT_CHARS cat-file]} {[LIT_CHARS commit]} {[DQ [VarSub 1]]}) (Com {[LIT_CHARS sed]} {[DQ [LIT_CHARS "1,/^"][LIT_OTHER "$"][LIT_CHARS /d]]}) ) ) (= scope= flags=0 words=[] bindings=[('orig_reflog_action', {[DQ [VarSub GIT_REFLOG_ACTION]]})]) (FunctionDef comment_for_reflog [] (Case to_match={[DQ [VarSub orig_reflog_action]]}, pat_word_list=[[{[SQ ]}, {[LIT_CHARS rebase] [LIT_OTHER "*"]}]] (List (= scope= flags=0 words=[] bindings=[('GIT_REFLOG_ACTION', {[DQ [LIT_CHARS "rebase -i ("][VarSub 1][LIT_CHARS ")"]]})]) (= scope= flags=1 words=[{[LIT_CHARS GIT_REFLOG_ACTION]}] bindings=[]) ) ) ) (= scope= flags=0 words=[] bindings=[('last_count', {[SQ ]})]) (FunctionDef mark_action_done [] (List (Com {[LIT_CHARS sed]} {[LIT_CHARS -e]} {[LIT_CHARS 1q]} < (FilenameRedirectNode filename={[DQ [VarSub todo]]} 0), (FilenameRedirectNode filename={[DQ [VarSub done]]} >"> 1), > ) (Com {[LIT_CHARS sed]} {[LIT_CHARS -e]} {[LIT_CHARS 1d]} < (FilenameRedirectNode filename={[DQ [VarSub todo]]} 0), (FilenameRedirectNode filename={[DQ [VarSub todo]] [LIT_CHARS .new]} >"> 1), > ) (Com {[LIT_CHARS mv]} {[LIT_CHARS -f]} {[DQ [VarSub todo]] [LIT_CHARS .new]} {[DQ [VarSub todo]]}) (= scope= flags=0 words=[] bindings=[('new_count', {[ArithSub {A Atom NODE_ARITH_WORD {[ComSub (Pipeline (Com redirects=[(FilenameRedirectNode filename={[DQ [VarSub done]]} 0)]{[LIT_CHARS git]} {[LIT_CHARS stripspace]} {[LIT_CHARS --strip-comments]}) (Com {[LIT_CHARS wc]} {[LIT_CHARS -l]}) )]}}]})]) (Com {[LIT_CHARS echo]} {[VarSub new_count]} < (FilenameRedirectNode filename={[DQ [VarSub msgnum]]} "> 1), > ) (= scope= flags=0 words=[] bindings=[('total', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub new_count]}} {A Atom NODE_ARITH_WORD {[ComSub (Pipeline (Com redirects=[(FilenameRedirectNode filename={[DQ [VarSub todo]]} 0)]{[LIT_CHARS git]} {[LIT_CHARS stripspace]} {[LIT_CHARS --strip-comments]}) (Com {[LIT_CHARS wc]} {[LIT_CHARS -l]}) )]}}}]})]) (Com {[LIT_CHARS echo]} {[VarSub total]} < (FilenameRedirectNode filename={[DQ [VarSub end]]} "> 1), > ) (If (Com {[LIT_CHARS test]} {[DQ [VarSub last_count]]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[DQ [VarSub new_count]]}) (List (= scope= flags=0 words=[] bindings=[('last_count', {[VarSub new_count]})]) (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Rebasing ("][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS new_count/][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "total)"]]}) (Com {[LIT_CHARS printf]} {[DQ [\ LIT_ESCAPED_CHAR "\\r"]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub verbose]]}) (Com {[LIT_CHARS echo]}) ) ) ) ) ) (FunctionDef reschedule_last_action [] (List (Pipeline (Com {[LIT_CHARS tail]} {[LIT_CHARS -n]} {[LIT_CHARS 1]} {[DQ [VarSub done]]}) (Com {[LIT_CHARS cat]} {[LIT_CHARS -]} {[DQ [VarSub todo]]} < (FilenameRedirectNode filename={[DQ [VarSub todo]] [LIT_CHARS .new]} "> 1), > ) ) (Com {[LIT_CHARS sed]} {[LIT_CHARS -e]} {[\ LIT_ESCAPED_CHAR "\\$"] [LIT_CHARS d]} < (FilenameRedirectNode filename={[DQ [VarSub done]]} 0), (FilenameRedirectNode filename={[DQ [VarSub done]] [LIT_CHARS .new]} "> 1), > ) (Com {[LIT_CHARS mv]} {[LIT_CHARS -f]} {[DQ [VarSub todo]] [LIT_CHARS .new]} {[DQ [VarSub todo]]}) (Com {[LIT_CHARS mv]} {[LIT_CHARS -f]} {[DQ [VarSub done]] [LIT_CHARS .new]} {[DQ [VarSub done]]}) ) ) (FunctionDef append_todo_help [] (List (Pipeline (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "Commands:\n"][LIT_CHARS " p, pick = use commit\n"][LIT_CHARS " r, reword = use commit, but edit the commit message\n"][LIT_CHARS " e, edit = use commit, but stop for amending\n"][LIT_CHARS " s, squash = use commit, but meld into previous commit\n"][LIT_CHARS " f, fixup = like "][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS squash][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ", but discard this commit's log message\n"][LIT_CHARS " x, exec = run command (the rest of the line) using shell\n"][LIT_CHARS " d, drop = remove commit\n"][LIT_CHARS "\n"][LIT_CHARS "These lines can be re-ordered; they are executed from top to bottom.\n"]]}) (Com {[LIT_CHARS git]} {[LIT_CHARS stripspace]} {[LIT_CHARS --comment-lines]} < (FilenameRedirectNode filename={[DQ [VarSub todo]]} >"> 1), > ) ) (If (Com {[LIT_CHARS test]} {[ComSub (Com {[LIT_CHARS get_missing_commit_check_level]})]} {[LIT_OTHER "="]} {[LIT_CHARS error]}) (Pipeline (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "Do not remove any line. Use 'drop' explicitly to remove a commit.\n"]]}) (Com {[LIT_CHARS git]} {[LIT_CHARS stripspace]} {[LIT_CHARS --comment-lines]} < (FilenameRedirectNode filename={[DQ [VarSub todo]]} >"> 1), > ) ) (ElseTrue) (Pipeline (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "If you remove a line here THAT COMMIT WILL BE LOST.\n"]]}) (Com {[LIT_CHARS git]} {[LIT_CHARS stripspace]} {[LIT_CHARS --comment-lines]} < (FilenameRedirectNode filename={[DQ [VarSub todo]]} >"> 1), > ) ) ) ) ) (FunctionDef make_patch [] (List (= scope= flags=0 words=[] bindings=[('sha1_and_parents', {[DQ [ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-list]} {[LIT_CHARS --parents]} {[LIT_CHARS -1]} {[DQ [VarSub 1]]})]]})]) (Case to_match={[DQ [VarSub sha1_and_parents]]}, pat_word_list=[[{[LIT_OTHER "?"] [LIT_OTHER "*"] [SQ ] [LIT_OTHER "?"] [LIT_OTHER "*"] [SQ ] [LIT_OTHER "?"] [LIT_OTHER "*"]}], [{[LIT_OTHER "?"] [LIT_OTHER "*"] [SQ ] [LIT_OTHER "?"] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (Com {[LIT_CHARS git]} {[LIT_CHARS diff]} {[LIT_CHARS --cc]} {[VarSub sha1_and_parents]}) (Com {[LIT_CHARS git]} {[LIT_CHARS diff-tree]} {[LIT_CHARS -p]} {[DQ [VarSub 1][LIT_CHARS "^!"]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Root commit"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[DQ [VarSub msg]]}) (Com {[LIT_CHARS commit_message]} {[DQ [VarSub 1]]} < (FilenameRedirectNode filename={[DQ [VarSub msg]]} "> 1), > ) ) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[DQ [VarSub author_script]]}) (Com {[LIT_CHARS get_author_ident_from_commit]} {[DQ [VarSub 1]]} < (FilenameRedirectNode filename={[DQ [VarSub author_script]]} "> 1), > ) ) ) ) (FunctionDef die_with_patch [] (List (Com {[LIT_CHARS echo]} {[DQ [VarSub 1]]} < (FilenameRedirectNode filename={[DQ [VarSub state_dir]] [LIT_CHARS /stopped-sha]} "> 1), > ) (Com {[LIT_CHARS make_patch]} {[DQ [VarSub 1]]}) (Com {[LIT_CHARS die]} {[DQ [VarSub 2]]}) ) ) (FunctionDef exit_with_patch [] (List (Com {[LIT_CHARS echo]} {[DQ [VarSub 1]]} < (FilenameRedirectNode filename={[DQ [VarSub state_dir]] [LIT_CHARS /stopped-sha]} "> 1), > ) (Com {[LIT_CHARS make_patch]} {[VarSub 1]}) (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --verify]} {[LIT_CHARS HEAD]} < (FilenameRedirectNode filename={[DQ [VarSub amend]]} "> 1), > ) (= scope= flags=0 words=[] bindings=[('gpg_sign_opt_quoted', {[VarSub gpg_sign_opt test_op=VS_TEST_COLON_PLUS {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --sq-quote]} {[DQ [VarSub gpg_sign_opt]]})]}]})]) (Com {[LIT_CHARS warn]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "You can amend the commit now, with\n"][LIT_CHARS "\n"][LIT_CHARS "\tgit commit --amend "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "gpg_sign_opt_quoted\n"][LIT_CHARS "\n"][LIT_CHARS "Once you are satisfied with your changes, run\n"][LIT_CHARS "\n"][LIT_CHARS "\tgit rebase --continue"]]})]]}) (Com {[LIT_CHARS warn]}) (Com {[LIT_CHARS exit]} {[VarSub 2]}) ) ) (FunctionDef die_abort [] (List (Com {[LIT_CHARS apply_autostash]}) (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[DQ [VarSub state_dir]]}) (Com {[LIT_CHARS die]} {[DQ [VarSub 1]]}) ) ) (FunctionDef has_action [] (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [ComSub (Com redirects=[(FilenameRedirectNode filename={[DQ [VarSub 1]]} 0)]{[LIT_CHARS git]} {[LIT_CHARS stripspace]} {[LIT_CHARS --strip-comments]})]]}) ) (FunctionDef is_empty_commit [] (List (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('tree', {[ComSub (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS -q]} {[LIT_CHARS --verify]} {[DQ [VarSub 1]] [LIT_OTHER "^"] [LIT_LBRACE "{"] [LIT_CHARS tree] [LIT_RBRACE "}"]})]})]) (List (= scope= flags=0 words=[] bindings=[('sha1', {[VarSub 1]})]) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sha1: not a commit that can be picked"]]})]]}) ) ) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('ptree', {[ComSub (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS -q]} {[LIT_CHARS --verify]} {[DQ [VarSub 1]] [LIT_OTHER "^"] [LIT_OTHER "^"] [LIT_LBRACE "{"] [LIT_CHARS tree] [LIT_RBRACE "}"]})]})]) (= scope= flags=0 words=[] bindings=[('ptree', {[LIT_CHARS 4b825dc642cb6eb9a060e54bf8d69288fbee4904]})]) ) (Com {[LIT_CHARS test]} {[DQ [VarSub tree]]} {[LIT_OTHER "="]} {[DQ [VarSub ptree]]}) ) ) (FunctionDef is_merge_commit [] (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --verify]} {[LIT_CHARS --quiet]} {[DQ [VarSub 1]] [LIT_OTHER "^"] [LIT_CHARS 2]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) ) (FunctionDef do_with_author [] (Subshell (List (= scope= flags=1 words=[{[LIT_CHARS GIT_AUTHOR_NAME]}, {[LIT_CHARS GIT_AUTHOR_EMAIL]}, {[LIT_CHARS GIT_AUTHOR_DATE]}] bindings=[]) (Com {[DQ [VarSub @]]}) ) ) ) (FunctionDef git_sequence_editor [] (List (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub GIT_SEQUENCE_EDITOR]]}) (List (= scope= flags=0 words=[] bindings=[('GIT_SEQUENCE_EDITOR', {[DQ [ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS sequence.editor]})]]})]) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub GIT_SEQUENCE_EDITOR]]} {[LIT_OTHER "]"]}) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('GIT_SEQUENCE_EDITOR', {[DQ [ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS var]} {[LIT_CHARS GIT_EDITOR]})]]})]) (Com {[LIT_CHARS return]} {[VarSub ?]}) ) ) ) ) (Com {[LIT_CHARS eval]} {[DQ [VarSub GIT_SEQUENCE_EDITOR]]} {[SQ ]}) ) ) (FunctionDef pick_one [] (List (= scope= flags=0 words=[] bindings=[('ff', {[LIT_CHARS --ff]})]) (Case to_match={[DQ [VarSub 1]]}, pat_word_list=[[{[LIT_CHARS -n]}], [{[LIT_OTHER "*"]}]] (List (= scope= flags=0 words=[] bindings=[('sha1', {[VarSub 2]})]) (= scope= flags=0 words=[] bindings=[('ff', {[SQ ]})]) ) (= scope= flags=0 words=[] bindings=[('sha1', {[VarSub 1]})]) ) (Case to_match={[DQ [VarSub force_rebase]]}, pat_word_list=[[{[SQ ]}], [{[LIT_OTHER "?"] [LIT_OTHER "*"]}]] (ElseTrue) (= scope= flags=0 words=[] bindings=[('ff', {[SQ ]})]) ) (AndOr OP_OR_IF (Com {[LIT_CHARS output]} {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --verify]} {[VarSub sha1]}) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Invalid commit name: "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS sha1]]})]]}) ) (If (Com {[LIT_CHARS is_empty_commit]} {[DQ [VarSub sha1]]}) (= scope= flags=0 words=[] bindings=[('empty_args', {[DQ [LIT_CHARS --allow-empty]]})]) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -d]} {[DQ [VarSub rewritten]]}) (AndOr OP_AND_IF (Com {[LIT_CHARS pick_one_preserving_merges]} {[DQ [VarSub @]]}) (Com {[LIT_CHARS return]}) ) ) (Com {[LIT_CHARS output]} {[LIT_CHARS eval]} {[LIT_CHARS git]} {[LIT_CHARS cherry-pick]} {[VarSub gpg_sign_opt test_op=VS_TEST_COLON_PLUS {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --sq-quote]} {[DQ [VarSub gpg_sign_opt]]})]}]} {[DQ [VarSub strategy_args]]} {[VarSub empty_args]} {[VarSub ff]} {[DQ [VarSub @]]}) (= scope= flags=0 words=[] bindings=[('ret', {[VarSub ?]})]) (Case to_match={[DQ [VarSub ret]]}, pat_word_list=[[{[LIT_OTHER "["] [LIT_CHARS 01] [LIT_OTHER "]"]}], [{[LIT_OTHER "*"]}]] (ElseTrue) (Com {[LIT_CHARS reschedule_last_action]}) ) (Com {[LIT_CHARS return]} {[VarSub ret]}) ) ) (FunctionDef pick_one_preserving_merges [] (List (= scope= flags=0 words=[] bindings=[('fast_forward', {[LIT_CHARS t]})]) (Case to_match={[DQ [VarSub 1]]}, pat_word_list=[[{[LIT_CHARS -n]}], [{[LIT_OTHER "*"]}]] (List (= scope= flags=0 words=[] bindings=[('fast_forward', {[LIT_CHARS f]})]) (= scope= flags=0 words=[] bindings=[('sha1', {[VarSub 2]})]) ) (= scope= flags=0 words=[] bindings=[('sha1', {[VarSub 1]})]) ) (= scope= flags=0 words=[] bindings=[('sha1', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[VarSub sha1]})]})]) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[DQ [VarSub state_dir]] [LIT_CHARS /current-commit]}) (If (Com {[LIT_CHARS test]} {[DQ [VarSub fast_forward]]} {[LIT_OTHER "="]} {[LIT_CHARS t]}) (List (While (Com {[LIT_CHARS read]} {[LIT_CHARS current_commit]}) (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS HEAD]} < (FilenameRedirectNode filename={[DQ [VarSub rewritten]] [LIT_CHARS /] [VarSub current_commit]} "> 1), > ) ) (AndOr OP_OR_IF (Com {[LIT_CHARS rm]} {[DQ [VarSub state_dir]] [LIT_CHARS /current-commit]}) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "Cannot write current commit's replacement sha1"]]})]]}) ) ) ) ) (Com {[LIT_CHARS echo]} {[VarSub sha1]} < (FilenameRedirectNode filename={[DQ [VarSub state_dir]] [LIT_CHARS /current-commit]} >"> 1), > ) (= scope= flags=0 words=[] bindings=[('new_parents', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('pend', {[DQ [LIT_CHARS " "][ComSub (Pipeline (Com {[LIT_CHARS git]} {[LIT_CHARS rev-list]} {[LIT_CHARS --parents]} {[LIT_CHARS -1]} {[VarSub sha1]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -d] [SQ ]} {[LIT_CHARS -s]} {[LIT_CHARS -f2-]}) )]]})]) (If (Com {[LIT_CHARS test]} {[DQ [VarSub pend]]} {[LIT_OTHER "="]} {[DQ [LIT_CHARS " "]]}) (= scope= flags=0 words=[] bindings=[('pend', {[DQ [LIT_CHARS " root"]]})]) ) (While (Com {[LIT_OTHER "["]} {[DQ [VarSub pend]]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[DQ ]} {[LIT_OTHER "]"]}) (List (= scope= flags=0 words=[] bindings=[('p', {[ComSub (Com {[LIT_CHARS expr]} {[DQ [VarSub pend]]} {[LIT_OTHER ":"]} {[SQ ]})]})]) (= scope= flags=0 words=[] bindings=[('pend', {[DQ [VarSub pend transform_ops=[VS_UNARY_POUND {[LIT_CHARS " "] [VarSub p]}]]]})]) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[DQ [VarSub rewritten]] [LIT_CHARS /] [VarSub p]}) (List (= scope= flags=0 words=[] bindings=[('new_p', {[ComSub (Com {[LIT_CHARS cat]} {[DQ [VarSub rewritten]] [LIT_CHARS /] [VarSub p]})]})]) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub new_p]]}) (= scope= flags=0 words=[] bindings=[('new_p', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS HEAD]})]})]) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[VarSub p]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[VarSub new_p]}) (= scope= flags=0 words=[] bindings=[('fast_forward', {[LIT_CHARS f]})]) ) (Case to_match={[DQ [VarSub new_parents]]}, pat_word_list=[[{[LIT_OTHER "*"] [VarSub new_p] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (ElseTrue) (= scope= flags=0 words=[] bindings=[('new_parents', {[DQ [VarSub new_parents][LIT_CHARS " "][VarSub new_p]]})]) ) ) (ElseTrue) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[DQ [VarSub dropped]] [LIT_CHARS /] [VarSub p]}) (List (= scope= flags=0 words=[] bindings=[('fast_forward', {[LIT_CHARS f]})]) (= scope= flags=0 words=[] bindings=[('replacement', {[DQ [ComSub (Com {[LIT_CHARS cat]} {[DQ [VarSub dropped]] [LIT_CHARS /] [VarSub p]})]]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub replacement]]}) (= scope= flags=0 words=[] bindings=[('replacement', {[LIT_CHARS root]})]) ) (= scope= flags=0 words=[] bindings=[('pend', {[DQ [LIT_CHARS " "][VarSub replacement][VarSub pend]]})]) ) (ElseTrue) (= scope= flags=0 words=[] bindings=[('new_parents', {[DQ [VarSub new_parents][LIT_CHARS " "][VarSub p]]})]) ) ) ) ) (Case to_match={[VarSub fast_forward]}, pat_word_list=[[{[LIT_CHARS t]}], [{[LIT_CHARS f]}]] (List (Com {[LIT_CHARS output]} {[LIT_CHARS warn]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Fast-forward to "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS sha1]]})]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS output]} {[LIT_CHARS git]} {[LIT_CHARS reset]} {[LIT_CHARS --hard]} {[VarSub sha1]}) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Cannot fast-forward to "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS sha1]]})]]}) ) ) (List (= scope= flags=0 words=[] bindings=[('first_parent', {[ComSub (Com {[LIT_CHARS expr]} {[DQ [VarSub new_parents]]} {[LIT_OTHER ":"]} {[SQ ]})]})]) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub 1]]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[DQ [LIT_CHARS -n]]} {[LIT_OTHER "]"]}) (AndOr OP_OR_IF (Com {[LIT_CHARS output]} {[LIT_CHARS git]} {[LIT_CHARS checkout]} {[VarSub first_parent]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Cannot move HEAD to "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS first_parent]]})]]}) ) ) (Case to_match={[DQ [VarSub new_parents]]}, pat_word_list=[[{[SQ ] [LIT_OTHER "*"] [SQ ] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (List (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[DQ [LIT_CHARS a][VarSub 1]]} {[LIT_OTHER "="]} {[LIT_CHARS a-n]}) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Refusing to squash a merge: "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS sha1]]})]]}) ) (= scope= flags=0 words=[] bindings=[('author_script_content', {[ComSub (Com {[LIT_CHARS get_author_ident_from_commit]} {[VarSub sha1]})]})]) (Com {[LIT_CHARS eval]} {[DQ [VarSub author_script_content]]}) (= scope= flags=0 words=[] bindings=[('msg_content', {[DQ [ComSub (Com {[LIT_CHARS commit_message]} {[VarSub sha1]})]]})]) (= scope= flags=0 words=[] bindings=[('new_parents', {[VarSub new_parents transform_ops=[VS_UNARY_POUND {[LIT_CHARS " "] [VarSub first_parent]}]]})]) (= scope= flags=0 words=[] bindings=[('merge_args', {[DQ [LIT_CHARS "--no-log --no-ff"]]})]) (If (Pipeline! (Com {[LIT_CHARS do_with_author]} {[LIT_CHARS output]} {[LIT_CHARS eval]} {[SQ ]}) ) (List (Com {[LIT_CHARS printf]} {[DQ [LIT_CHARS "%s"][\ LIT_ESCAPED_CHAR "\\n"]]} {[DQ [VarSub msg_content]]} < (FilenameRedirectNode filename={[DQ [VarSub GIT_DIR]] [LIT_CHARS /MERGE_MSG]} "> 1), > ) (Com {[LIT_CHARS die_with_patch]} {[VarSub sha1]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Error redoing merge "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS sha1]]})]]}) ) ) (Com {[LIT_CHARS echo]} {[DQ [VarSub sha1][LIT_CHARS " "][ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS HEAD] [LIT_OTHER "^"] [LIT_CHARS 0]})]]} < (FilenameRedirectNode filename={[DQ [VarSub rewritten_list]]} >"> 1), > ) ) (AndOr OP_OR_IF (Com {[LIT_CHARS output]} {[LIT_CHARS eval]} {[LIT_CHARS git]} {[LIT_CHARS cherry-pick]} {[VarSub gpg_sign_opt test_op=VS_TEST_COLON_PLUS {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --sq-quote]} {[DQ [VarSub gpg_sign_opt]]})]}]} {[DQ [VarSub strategy_args]]} {[DQ [VarSub @]]}) (Com {[LIT_CHARS die_with_patch]} {[VarSub sha1]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Could not pick "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS sha1]]})]]}) ) ) ) ) ) ) (FunctionDef this_nth_commit_message [] (List (= scope= flags=0 words=[] bindings=[('n', {[VarSub 1]})]) (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "This is the commit message #"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "{n}:"]]}) ) ) (FunctionDef skip_nth_commit_message [] (List (= scope= flags=0 words=[] bindings=[('n', {[VarSub 1]})]) (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "The commit message #"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "{n} will be skipped:"]]}) ) ) (FunctionDef update_squash_messages [] (List (If (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[DQ [VarSub squash_msg]]}) (List (AndOr OP_OR_IF (Com {[LIT_CHARS mv]} {[DQ [VarSub squash_msg]]} {[DQ [VarSub squash_msg]] [LIT_CHARS .bak]}) (Com {[LIT_CHARS exit]}) ) (= scope= flags=0 words=[] bindings=[('count', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[ComSub (Com redirects=[(FilenameRedirectNode filename={[DQ [VarSub squash_msg]] [LIT_CHARS .bak]} 0)]{[LIT_CHARS sed]} {[LIT_CHARS -n]} {[LIT_CHARS -e]} {[DQ [LIT_CHARS "1s/^"][VarSub comment_char][LIT_CHARS ".*"][\ LIT_ESCAPED_CHAR "\\("][LIT_CHARS "[0-9][0-9]*"][\ LIT_ESCAPED_CHAR "\\)"][LIT_CHARS ".*/"][\ LIT_ESCAPED_CHAR "\\1"][LIT_CHARS /p]]} {[LIT_CHARS -e]} {[DQ [LIT_CHARS q]]})]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})]) (List redirects=[(FilenameRedirectNode filename={[DQ [VarSub squash_msg]]} "> 1)] (Com {[LIT_CHARS printf]} {[SQ ]} {[DQ [VarSub comment_char][LIT_CHARS " "][ComSub (Com {[LIT_CHARS eval_ngettext]} {[DQ [LIT_CHARS "This is a combination of "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "count commit."]]} {[DQ [LIT_CHARS "This is a combination of "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "count commits."]]} {[VarSub count]})]]}) (Com {[LIT_CHARS sed]} {[LIT_CHARS -e]} {[LIT_CHARS 1d]} {[LIT_CHARS -e]} {[SQ ]} < (FilenameRedirectNode filename={[DQ [VarSub squash_msg]] [LIT_CHARS .bak]} 0), > ) ) ) (ElseTrue) (List (AndOr OP_OR_IF (Com {[LIT_CHARS commit_message]} {[LIT_CHARS HEAD]} < (FilenameRedirectNode filename={[DQ [VarSub fixup_msg]]} "> 1), > ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "Cannot write "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS fixup_msg]]})]]}) ) (= scope= flags=0 words=[] bindings=[('count', {[LIT_CHARS 2]})]) (List redirects=[(FilenameRedirectNode filename={[DQ [VarSub squash_msg]]} "> 1)] (Com {[LIT_CHARS printf]} {[SQ ]} {[DQ [VarSub comment_char][LIT_CHARS " "][ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "This is a combination of 2 commits."]]})]]}) (Com {[LIT_CHARS printf]} {[SQ ]} {[DQ [VarSub comment_char][LIT_CHARS " "][ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "This is the 1st commit message:"]]})]]}) (Com {[LIT_CHARS echo]}) (Com {[LIT_CHARS cat]} {[DQ [VarSub fixup_msg]]}) ) ) ) (Case to_match={[VarSub 1]}, pat_word_list=[[{[LIT_CHARS squash]}], [{[LIT_CHARS fixup]}]] (List (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[DQ [VarSub fixup_msg]]}) (Com {[LIT_CHARS echo]}) (Com {[LIT_CHARS printf]} {[SQ ]} {[DQ [VarSub comment_char][LIT_CHARS " "][ComSub (Com {[LIT_CHARS this_nth_commit_message]} {[VarSub count]})]]}) (Com {[LIT_CHARS echo]}) (Com {[LIT_CHARS commit_message]} {[VarSub 2]}) ) (List (Com {[LIT_CHARS echo]}) (Com {[LIT_CHARS printf]} {[SQ ]} {[DQ [VarSub comment_char][LIT_CHARS " "][ComSub (Com {[LIT_CHARS skip_nth_commit_message]} {[VarSub count]})]]}) (Com {[LIT_CHARS echo]}) (Pipeline (Com {[LIT_CHARS commit_message]} {[VarSub 2]}) (Com {[LIT_CHARS git]} {[LIT_CHARS stripspace]} {[LIT_CHARS --comment-lines]}) (Com {[LIT_CHARS sed]} {[LIT_CHARS -e]} {[SQ ]}) ) ) ) ) ) (FunctionDef peek_next_command [] (Pipeline (Com {[LIT_CHARS git]} {[LIT_CHARS stripspace]} {[LIT_CHARS --strip-comments]} < (FilenameRedirectNode filename={[DQ [VarSub todo]]} 0), > ) (Com {[LIT_CHARS sed]} {[LIT_CHARS -n]} {[LIT_CHARS -e]} {[SQ ]} {[LIT_CHARS -e]} {[LIT_CHARS q]}) ) ) (FunctionDef die_failed_squash [] (List (= scope= flags=0 words=[] bindings=[('sha1', {[VarSub 1]})]) (= scope= flags=0 words=[] bindings=[('rest', {[VarSub 2]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS mv]} {[DQ [VarSub squash_msg]]} {[DQ [VarSub msg]]}) (Com {[LIT_CHARS exit]}) ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[DQ [VarSub fixup_msg]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS cp]} {[DQ [VarSub msg]]} {[DQ [VarSub GIT_DIR]] [LIT_CHARS /MERGE_MSG]}) (Com {[LIT_CHARS exit]}) ) (Com {[LIT_CHARS warn]}) (Com {[LIT_CHARS warn]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Could not apply "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sha1... "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS rest]]})]]}) (Com {[LIT_CHARS die_with_patch]} {[VarSub sha1]} {[DQ ]}) ) ) (FunctionDef flush_rewritten_pending [] (List (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -s]} {[DQ [VarSub rewritten_pending]]}) (Com {[LIT_CHARS return]}) ) (= scope= flags=0 words=[] bindings=[('newsha1', {[DQ [ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS HEAD] [LIT_OTHER "^"] [LIT_CHARS 0]})]]})]) (Com {[LIT_CHARS sed]} {[DQ [LIT_CHARS s/][LIT_OTHER "$"][LIT_CHARS "/ "][VarSub newsha1][LIT_CHARS /]]} < (FilenameRedirectNode filename={[DQ [VarSub rewritten_pending]]} 0), (FilenameRedirectNode filename={[DQ [VarSub rewritten_list]]} >"> 1), > ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[DQ [VarSub rewritten_pending]]}) ) ) (FunctionDef record_in_rewritten [] (List (= scope= flags=0 words=[] bindings=[('oldsha1', {[DQ [ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[VarSub 1]})]]})]) (Com {[LIT_CHARS echo]} {[DQ [VarSub oldsha1]]} < (FilenameRedirectNode filename={[DQ [VarSub rewritten_pending]]} >"> 1), > ) (Case to_match={[DQ [ComSub (Com {[LIT_CHARS peek_next_command]})]]}, pat_word_list=[[{[LIT_CHARS squash]}, {[LIT_CHARS s]}, {[LIT_CHARS fixup]}, {[LIT_CHARS f]}], [{[LIT_OTHER "*"]}]] (ElseTrue) (Com {[LIT_CHARS flush_rewritten_pending]}) ) ) ) (FunctionDef do_pick [] (List (= scope= flags=0 words=[] bindings=[('sha1', {[VarSub 1]})]) (= scope= flags=0 words=[] bindings=[('rest', {[VarSub 2]})]) (If (Com {[LIT_CHARS test]} {[DQ [ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS HEAD]})]]} {[LIT_OTHER "="]} {[DQ [VarSub squash_onto]]}) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS commit]} {[LIT_CHARS --allow-empty]} {[LIT_CHARS --allow-empty-message]} {[LIT_CHARS --amend]} {[LIT_CHARS --no-post-rewrite]} {[LIT_CHARS -n]} {[LIT_CHARS -q]} {[LIT_CHARS -C]} {[VarSub sha1]}) (AndOr OP_AND_IF (Com {[LIT_CHARS pick_one]} {[LIT_CHARS -n]} {[VarSub sha1]}) (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS commit]} {[LIT_CHARS --allow-empty]} {[LIT_CHARS --allow-empty-message]} {[LIT_CHARS --amend]} {[LIT_CHARS --no-post-rewrite]} {[LIT_CHARS -n]} {[LIT_CHARS -q]} {[LIT_CHARS -C]} {[VarSub sha1]} {[VarSub gpg_sign_opt test_op=VS_TEST_COLON_PLUS {[DQ [VarSub gpg_sign_opt]]}]}) (Com {[LIT_CHARS die_with_patch]} {[VarSub sha1]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Could not apply "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sha1... "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS rest]]})]]}) ) ) ) (ElseTrue) (AndOr OP_OR_IF (Com {[LIT_CHARS pick_one]} {[VarSub sha1]}) (Com {[LIT_CHARS die_with_patch]} {[VarSub sha1]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Could not apply "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sha1... "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS rest]]})]]}) ) ) ) ) (FunctionDef do_next [] (List (AndOr OP_OR_IF (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[DQ [VarSub msg]]} {[DQ [VarSub author_script]]} {[DQ [VarSub amend]]} {[DQ [VarSub state_dir]] [LIT_CHARS /stopped-sha]}) (Com {[LIT_CHARS exit]}) ) (Com {[LIT_CHARS read]} {[LIT_CHARS -r]} {[LIT_CHARS command]} {[LIT_CHARS sha1]} {[LIT_CHARS rest]} < (FilenameRedirectNode filename={[DQ [VarSub todo]]} 0), > ) (Case to_match={[DQ [VarSub command]]}, pat_word_list=[[{[DQ [VarSub comment_char]] [LIT_OTHER "*"]}, {[SQ ]}, {[LIT_CHARS noop]}, {[LIT_CHARS drop]}, {[LIT_CHARS d]}], [{[DQ [VarSub cr]]}], [{[LIT_CHARS pick]}, {[LIT_CHARS p]}], [{[LIT_CHARS reword]}, {[LIT_CHARS r]}], [{[LIT_CHARS edit]}, {[LIT_CHARS e]}], [{[LIT_CHARS squash]}, {[LIT_CHARS s]}, {[LIT_CHARS fixup]}, {[LIT_CHARS f]}], [{[LIT_CHARS x]}, {[DQ [LIT_CHARS exec]]}], [{[LIT_OTHER "*"]}]] (Com {[LIT_CHARS mark_action_done]}) (Com {[LIT_CHARS mark_action_done]}) (List (Com {[LIT_CHARS comment_for_reflog]} {[LIT_CHARS pick]}) (Com {[LIT_CHARS mark_action_done]}) (Com {[LIT_CHARS do_pick]} {[VarSub sha1]} {[DQ [VarSub rest]]}) (Com {[LIT_CHARS record_in_rewritten]} {[VarSub sha1]}) ) (List (Com {[LIT_CHARS comment_for_reflog]} {[LIT_CHARS reword]}) (Com {[LIT_CHARS mark_action_done]}) (Com {[LIT_CHARS do_pick]} {[VarSub sha1]} {[DQ [VarSub rest]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS commit]} {[LIT_CHARS --amend]} {[LIT_CHARS --no-post-rewrite]} {[VarSub gpg_sign_opt test_op=VS_TEST_COLON_PLUS {[DQ [VarSub gpg_sign_opt]]}]}) (List (Com {[LIT_CHARS warn]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Could not amend commit after successfully picking "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sha1... "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "rest\n"][LIT_CHARS "This is most likely due to an empty commit message, or the pre-commit hook\n"][LIT_CHARS "failed. If the pre-commit hook failed, you may need to resolve the issue before\n"][LIT_CHARS "you are able to reword the commit."]]})]]}) (Com {[LIT_CHARS exit_with_patch]} {[VarSub sha1]} {[LIT_CHARS 1]}) ) ) (Com {[LIT_CHARS record_in_rewritten]} {[VarSub sha1]}) ) (List (Com {[LIT_CHARS comment_for_reflog]} {[LIT_CHARS edit]}) (Com {[LIT_CHARS mark_action_done]}) (Com {[LIT_CHARS do_pick]} {[VarSub sha1]} {[DQ [VarSub rest]]}) (= scope= flags=0 words=[] bindings=[('sha1_abbrev', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --short]} {[VarSub sha1]})]})]) (Com {[LIT_CHARS warn]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Stopped at "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sha1_abbrev... "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS rest]]})]]}) (Com {[LIT_CHARS exit_with_patch]} {[VarSub sha1]} {[LIT_CHARS 0]}) ) (List (Case to_match={[DQ [VarSub command]]}, pat_word_list=[[{[LIT_CHARS squash]}, {[LIT_CHARS s]}], [{[LIT_CHARS fixup]}, {[LIT_CHARS f]}]] (= scope= flags=0 words=[] bindings=[('squash_style', {[LIT_CHARS squash]})]) (= scope= flags=0 words=[] bindings=[('squash_style', {[LIT_CHARS fixup]})]) ) (Com {[LIT_CHARS comment_for_reflog]} {[VarSub squash_style]}) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[DQ [VarSub done]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS has_action]} {[DQ [VarSub done]]}) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Cannot '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "squash_style' without a previous commit"]]})]]}) ) ) (Com {[LIT_CHARS mark_action_done]}) (Com {[LIT_CHARS update_squash_messages]} {[VarSub squash_style]} {[VarSub sha1]}) (= scope= flags=0 words=[] bindings=[('author_script_content', {[ComSub (Com {[LIT_CHARS get_author_ident_from_commit]} {[LIT_CHARS HEAD]})]})]) (Com {[LIT_CHARS echo]} {[DQ [VarSub author_script_content]]} < (FilenameRedirectNode filename={[DQ [VarSub author_script]]} "> 1), > ) (Com {[LIT_CHARS eval]} {[DQ [VarSub author_script_content]]}) (If (Pipeline! (Com {[LIT_CHARS pick_one]} {[LIT_CHARS -n]} {[VarSub sha1]}) ) (List (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --verify]} {[LIT_CHARS HEAD]} < (FilenameRedirectNode filename={[DQ [VarSub amend]]} "> 1), > ) (Com {[LIT_CHARS die_failed_squash]} {[VarSub sha1]} {[DQ [VarSub rest]]}) ) ) (Case to_match={[DQ [ComSub (Com {[LIT_CHARS peek_next_command]})]]}, pat_word_list=[[{[LIT_CHARS squash]}, {[LIT_CHARS s]}, {[LIT_CHARS fixup]}, {[LIT_CHARS f]}], [{[LIT_OTHER "*"]}]] (AndOr OP_OR_IF (Com {[LIT_CHARS do_with_author]} {[LIT_CHARS output]} {[LIT_CHARS git]} {[LIT_CHARS commit]} {[LIT_CHARS --amend]} {[LIT_CHARS --no-verify]} {[LIT_CHARS -F]} {[DQ [VarSub squash_msg]]} {[VarSub gpg_sign_opt test_op=VS_TEST_COLON_PLUS {[DQ [VarSub gpg_sign_opt]]}]}) (Com {[LIT_CHARS die_failed_squash]} {[VarSub sha1]} {[DQ [VarSub rest]]}) ) (List (If (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[DQ [VarSub fixup_msg]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS do_with_author]} {[LIT_CHARS git]} {[LIT_CHARS commit]} {[LIT_CHARS --amend]} {[LIT_CHARS --no-verify]} {[LIT_CHARS -F]} {[DQ [VarSub fixup_msg]]} {[VarSub gpg_sign_opt test_op=VS_TEST_COLON_PLUS {[DQ [VarSub gpg_sign_opt]]}]}) (Com {[LIT_CHARS die_failed_squash]} {[VarSub sha1]} {[DQ [VarSub rest]]}) ) (ElseTrue) (List (AndOr OP_OR_IF (Com {[LIT_CHARS cp]} {[DQ [VarSub squash_msg]]} {[DQ [VarSub GIT_DIR]] [LIT_CHARS /SQUASH_MSG]}) (Com {[LIT_CHARS exit]}) ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[DQ [VarSub GIT_DIR]] [LIT_CHARS /MERGE_MSG]}) (AndOr OP_OR_IF (Com {[LIT_CHARS do_with_author]} {[LIT_CHARS git]} {[LIT_CHARS commit]} {[LIT_CHARS --amend]} {[LIT_CHARS --no-verify]} {[LIT_CHARS -F]} {[DQ [VarSub GIT_DIR]] [LIT_CHARS /SQUASH_MSG]} {[LIT_CHARS -e]} {[VarSub gpg_sign_opt test_op=VS_TEST_COLON_PLUS {[DQ [VarSub gpg_sign_opt]]}]}) (Com {[LIT_CHARS die_failed_squash]} {[VarSub sha1]} {[DQ [VarSub rest]]}) ) ) ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[DQ [VarSub squash_msg]]} {[DQ [VarSub fixup_msg]]}) ) ) (Com {[LIT_CHARS record_in_rewritten]} {[VarSub sha1]}) ) (List (Com {[LIT_CHARS read]} {[LIT_CHARS -r]} {[LIT_CHARS command]} {[LIT_CHARS rest]} < (FilenameRedirectNode filename={[DQ [VarSub todo]]} 0), > ) (Com {[LIT_CHARS mark_action_done]}) (Com {[LIT_CHARS eval_gettextln]} {[DQ [LIT_CHARS "Executing: "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS rest]]}) (Com {[DQ [VarSub SHELL test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS "@SHELL_PATH@"]}]]} {[LIT_CHARS -c]} {[DQ [VarSub rest]]}) (= scope= flags=0 words=[] bindings=[('status', {[VarSub ?]})]) (= scope= flags=0 words=[] bindings=[('dirty', {[LIT_CHARS f]})]) (AndOr OP_OR_IF (Subshell (Com {[LIT_CHARS require_clean_work_tree]} {[DQ [LIT_CHARS rebase]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) ) (= scope= flags=0 words=[] bindings=[('dirty', {[LIT_CHARS t]})]) ) (If (Com {[LIT_CHARS test]} {[DQ [VarSub status]]} {[LIT_CHARS -ne]} {[LIT_CHARS 0]}) (List (Com {[LIT_CHARS warn]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Execution failed: "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS rest]]})]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[DQ [VarSub dirty]]} {[LIT_OTHER "="]} {[LIT_CHARS f]}) (Com {[LIT_CHARS warn]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "and made changes to the index and/or the working tree"]]})]]}) ) (Com {[LIT_CHARS warn]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "You can fix the problem, and then run\n"][LIT_CHARS "\n"][LIT_CHARS "\tgit rebase --continue"]]})]]}) (Com {[LIT_CHARS warn]}) (If (Com {[LIT_CHARS test]} {[VarSub status]} {[LIT_CHARS -eq]} {[LIT_CHARS 127]}) (= scope= flags=0 words=[] bindings=[('status', {[LIT_CHARS 1]})]) ) (Com {[LIT_CHARS exit]} {[DQ [VarSub status]]}) ) (Com {[LIT_CHARS test]} {[DQ [VarSub dirty]]} {[LIT_OTHER "="]} {[LIT_CHARS t]}) (List (Com {[LIT_CHARS warn]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Execution succeeded: "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "rest\n"][LIT_CHARS "but left changes to the index and/or the working tree\n"][LIT_CHARS "Commit or stash your changes, and then run\n"][LIT_CHARS "\n"][LIT_CHARS "\tgit rebase --continue"]]})]]}) (Com {[LIT_CHARS warn]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) ) (List (Com {[LIT_CHARS warn]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Unknown command: "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "command "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sha1 "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS rest]]})]]}) (= scope= flags=0 words=[] bindings=[('fixtodo', {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "Please fix this using 'git rebase --edit-todo'."]]})]]})]) (If (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --verify]} {[LIT_CHARS -q]} {[DQ [VarSub sha1]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (Com {[LIT_CHARS die_with_patch]} {[VarSub sha1]} {[DQ [VarSub fixtodo]]}) (ElseTrue) (Com {[LIT_CHARS die]} {[DQ [VarSub fixtodo]]}) ) ) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -s]} {[DQ [VarSub todo]]}) (Com {[LIT_CHARS return]}) ) (AndOr OP_AND_IF (Com {[LIT_CHARS comment_for_reflog]} {[LIT_CHARS finish]}) (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('newhead', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS HEAD]})]})]) (AndOr OP_AND_IF (Case to_match={[VarSub head_name]}, pat_word_list=[[{[LIT_CHARS refs/] [LIT_OTHER "*"]}]] (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('message', {[DQ [VarSub GIT_REFLOG_ACTION][LIT_CHARS ": "][VarSub head_name][LIT_CHARS " onto "][VarSub onto]]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS update-ref]} {[LIT_CHARS -m]} {[DQ [VarSub message]]} {[VarSub head_name]} {[VarSub newhead]} {[VarSub orig_head]}) (Com {[LIT_CHARS git]} {[LIT_CHARS symbolic-ref]} {[LIT_CHARS -m]} {[DQ [VarSub GIT_REFLOG_ACTION][LIT_CHARS ": returning to "][VarSub head_name]]} {[LIT_CHARS HEAD]} {[VarSub head_name]}) ) ) ) (AndOr OP_AND_IF (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_OTHER "!"]} {[LIT_CHARS -f]} {[DQ [VarSub state_dir]] [LIT_CHARS /verbose]}) (Com {[LIT_CHARS git]} {[LIT_CHARS diff-tree]} {[LIT_CHARS --stat]} {[VarSub orig_head] [LIT_CHARS ..HEAD]}) ) (AndOr OP_AND_IF (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -s]} {[DQ [VarSub rewritten_list]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS notes]} {[LIT_CHARS copy]} {[LIT_CHARS --for-rewrite] [LIT_OTHER "="] [LIT_CHARS rebase]} < (FilenameRedirectNode filename={[DQ [VarSub rewritten_list]]} 0), > ) (Com {[LIT_CHARS true]}) ) ) (= scope= flags=0 words=[] bindings=[('hook', {[DQ [ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --git-path]} {[LIT_CHARS hooks/post-rewrite]})]]})]) ) ) ) ) ) (AndOr OP_AND_IF (If (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -x]} {[DQ [VarSub hook]]}) (Com {[LIT_CHARS test]} {[LIT_CHARS -s]} {[DQ [VarSub rewritten_list]]}) ) (List (Com {[DQ [VarSub hook]]} {[LIT_CHARS rebase]} < (FilenameRedirectNode filename={[DQ [VarSub rewritten_list]]} 0), > ) (Com {[LIT_CHARS true]}) ) ) (Com {[LIT_CHARS warn]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Successfully rebased and updated "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS head_name.]]})]]}) ) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]}) ) ) (FunctionDef do_rest [] (While (Com {[LIT_OTHER ":"]}) (AndOr OP_OR_IF (Com {[LIT_CHARS do_next]}) (Com {[LIT_CHARS break]}) ) ) ) (FunctionDef skip_unnecessary_picks [] (List (= scope= flags=0 words=[] bindings=[('fd', {[LIT_CHARS 3]})]) (AndOr OP_AND_IF (While (Com {[LIT_CHARS read]} {[LIT_CHARS -r]} {[LIT_CHARS command]} {[LIT_CHARS rest]}) (List (Case to_match={[DQ [VarSub fd][LIT_CHARS ","][VarSub command]]}, pat_word_list=[[{[LIT_CHARS 3] [LIT_COMMA ","] [LIT_CHARS pick]}, {[LIT_CHARS 3] [LIT_COMMA ","] [LIT_CHARS p]}], [{[LIT_CHARS 3] [LIT_COMMA ","] [DQ [VarSub comment_char]] [LIT_OTHER "*"]}, {[LIT_CHARS 3] [LIT_COMMA ","]}], [{[LIT_OTHER "*"]}]] (List (= scope= flags=0 words=[] bindings=[('sha1', {[VarSub rest transform_ops=[VS_UNARY_DPERCENT {[LIT_CHARS " *"]}]]})]) (Case to_match={[DQ [ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --verify]} {[LIT_CHARS --quiet]} {[DQ [VarSub sha1]] [LIT_OTHER "^"]})]]}, pat_word_list=[[{[DQ [VarSub onto]] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (= scope= flags=0 words=[] bindings=[('onto', {[VarSub sha1]})]) (= scope= flags=0 words=[] bindings=[('fd', {[LIT_CHARS 1]})]) ) ) (ElseTrue) (= scope= flags=0 words=[] bindings=[('fd', {[LIT_CHARS 1]})]) ) (Com {[LIT_CHARS printf]} {[SQ ]} {[DQ [VarSub command][VarSub rest test_op=VS_TEST_COLON_PLUS {[LIT_CHARS " "]}][VarSub rest]]} < (DescriptorRedirectNode target={[VarSub fd]} &"> 1), > ) ) ) (AndOr OP_AND_IF (Com {[LIT_CHARS mv]} {[LIT_CHARS -f]} {[DQ [VarSub todo]] [LIT_CHARS .new]} {[DQ [VarSub todo]]}) (AndOr OP_OR_IF (Case to_match={[DQ [ComSub (Com {[LIT_CHARS peek_next_command]})]]}, pat_word_list=[[{[LIT_CHARS squash]}, {[LIT_CHARS s]}, {[LIT_CHARS fixup]}, {[LIT_CHARS f]}]] (Com {[LIT_CHARS record_in_rewritten]} {[DQ [VarSub onto]]}) ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "Could not skip unnecessary pick commands"]]})]]}) ) ) ) ) ) (FunctionDef transform_todo_ids [] (AndOr OP_AND_IF (While (Com {[LIT_CHARS read]} {[LIT_CHARS -r]} {[LIT_CHARS command]} {[LIT_CHARS rest]}) (List (Case to_match={[DQ [VarSub command]]}, pat_word_list=[[{[DQ [VarSub comment_char]] [LIT_OTHER "*"]}, {[LIT_CHARS exec]}], [{[LIT_OTHER "*"]}]] (ElseTrue) (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('sha1', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --verify]} {[LIT_CHARS --quiet]} {[DQ [VarSub @]]} {[VarSub rest transform_ops=[VS_UNARY_DPERCENT {[LIT_CHARS "[\t ]*"]}]]})]})]) (= scope= flags=0 words=[] bindings=[('rest', {[DQ [VarSub sha1][LIT_CHARS " "][VarSub rest transform_ops=[VS_UNARY_POUND {[LIT_CHARS "*[\t ]"]}]]]})]) ) ) (Com {[LIT_CHARS printf]} {[SQ ]} {[DQ [VarSub command][VarSub rest test_op=VS_TEST_COLON_PLUS {[LIT_CHARS " "]}][VarSub rest]]}) ) ) (Com {[LIT_CHARS mv]} {[LIT_CHARS -f]} {[DQ [VarSub todo][LIT_CHARS .new]]} {[DQ [VarSub todo]]}) ) ) (FunctionDef expand_todo_ids [] (Com {[LIT_CHARS transform_todo_ids]}) ) (FunctionDef collapse_todo_ids [] (Com {[LIT_CHARS transform_todo_ids]} {[LIT_CHARS --short]}) ) (FunctionDef rearrange_squash [] (List (While (Com {[LIT_CHARS read]} {[LIT_CHARS -r]} {[LIT_CHARS pick]} {[LIT_CHARS sha1]} {[LIT_CHARS message]}) (List (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub format]]}) (= scope= flags=0 words=[] bindings=[('message', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS log]} {[LIT_CHARS -n]} {[LIT_CHARS 1]} {[LIT_CHARS --format] [LIT_OTHER "="] [DQ [LIT_CHARS "%s"]]} {[VarSub sha1]})]})]) ) (Case to_match={[DQ [VarSub message]]}, pat_word_list=[[{[DQ [LIT_CHARS "squash! "]] [LIT_OTHER "*"]}, {[DQ [LIT_CHARS "fixup! "]] [LIT_OTHER "*"]}]] (List (= scope= flags=0 words=[] bindings=[('action', {[DQ [VarSub message transform_ops=[VS_UNARY_DPERCENT {[LIT_CHARS "!*"]}]]]})]) (= scope= flags=0 words=[] bindings=[('rest', {[VarSub message]})]) (= scope= flags=0 words=[] bindings=[('prefix', {[SQ ]})]) (While (Com {[LIT_OTHER ":"]}) (Case to_match={[DQ [VarSub rest]]}, pat_word_list=[[{[DQ [LIT_CHARS "squash! "]] [LIT_OTHER "*"]}, {[DQ [LIT_CHARS "fixup! "]] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (List (= scope= flags=0 words=[] bindings=[('prefix', {[DQ [VarSub prefix][VarSub rest transform_ops=[VS_UNARY_DPERCENT {[LIT_CHARS "!*"]}]][LIT_CHARS ","]]})]) (= scope= flags=0 words=[] bindings=[('rest', {[DQ [VarSub rest transform_ops=[VS_UNARY_POUND {[LIT_CHARS "*! "]}]]]})]) ) (Com {[LIT_CHARS break]}) ) ) (Com {[LIT_CHARS printf]} {[SQ ]} {[DQ [VarSub sha1]]} {[DQ [VarSub action]]} {[DQ [VarSub prefix]]} {[DQ [VarSub rest]]}) (If (Com {[LIT_CHARS test]} {[DQ [VarSub rest transform_ops=[VS_UNARY_POUND {[LIT_CHARS "* "]}]]]} {[LIT_OTHER "="]} {[DQ [VarSub rest]]}) (List (= scope= flags=0 words=[] bindings=[('fullsha', {[DQ [ComSub (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS -q]} {[LIT_CHARS --verify]} {[DQ [VarSub rest]]})]]})]) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub fullsha]]}) (Com {[LIT_CHARS echo]} {[DQ [VarSub sha1][LIT_CHARS " +"][VarSub action][LIT_CHARS " "][VarSub prefix][LIT_CHARS " "][VarSub fullsha]]}) ) ) ) ) ) ) ) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -s]} {[DQ [VarSub 1][LIT_CHARS .sq]]}) (Com {[LIT_CHARS return]}) ) (= scope= flags=0 words=[] bindings=[('used', {[SQ ]})]) (While (Com {[LIT_CHARS read]} {[LIT_CHARS -r]} {[LIT_CHARS pick]} {[LIT_CHARS sha1]} {[LIT_CHARS message]}) (List (Case to_match={[DQ [LIT_CHARS " "][VarSub used]]}, pat_word_list=[[{[LIT_OTHER "*"] [DQ [LIT_CHARS " "][VarSub sha1][LIT_CHARS " "]] [LIT_OTHER "*"]}]] (Com {[LIT_CHARS continue]}) ) (Com {[LIT_CHARS printf]} {[SQ ]} {[DQ [VarSub pick][LIT_CHARS " "][VarSub sha1][LIT_CHARS " "][VarSub message]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub format]]}) (= scope= flags=0 words=[] bindings=[('message', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS log]} {[LIT_CHARS -n]} {[LIT_CHARS 1]} {[LIT_CHARS --format] [LIT_OTHER "="] [DQ [LIT_CHARS "%s"]]} {[VarSub sha1]})]})]) ) (= scope= flags=0 words=[] bindings=[('used', {[DQ [VarSub used][VarSub sha1][LIT_CHARS " "]]})]) (While (Com {[LIT_CHARS read]} {[LIT_CHARS -r]} {[LIT_CHARS squash]} {[LIT_CHARS action]} {[LIT_CHARS msg_prefix]} {[LIT_CHARS msg_content]}) (List (Case to_match={[DQ [LIT_CHARS " "][VarSub used]]}, pat_word_list=[[{[LIT_OTHER "*"] [DQ [LIT_CHARS " "][VarSub squash][LIT_CHARS " "]] [LIT_OTHER "*"]}]] (Com {[LIT_CHARS continue]}) ) (= scope= flags=0 words=[] bindings=[('emit', {[LIT_CHARS 0]})]) (Case to_match={[DQ [VarSub action]]}, pat_word_list=[[{[LIT_OTHER "+"] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (List (= scope= flags=0 words=[] bindings=[('action', {[DQ [VarSub action transform_ops=[VS_UNARY_POUND {[LIT_CHARS "+"]}]]]})]) (Case to_match={[DQ [VarSub msg_content]]}, pat_word_list=[[{[DQ [VarSub sha1]] [LIT_OTHER "*"]}]] (= scope= flags=0 words=[] bindings=[('emit', {[LIT_CHARS 1]})]) ) ) (Case to_match={[DQ [VarSub message]]}, pat_word_list=[[{[DQ [VarSub msg_content]] [LIT_OTHER "*"]}]] (= scope= flags=0 words=[] bindings=[('emit', {[LIT_CHARS 1]})]) ) ) (If (Com {[LIT_CHARS test]} {[VarSub emit]} {[LIT_OTHER "="]} {[LIT_CHARS 1]}) (List (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub format]]}) (= scope= flags=0 words=[] bindings=[('msg_content', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS log]} {[LIT_CHARS -n]} {[LIT_CHARS 1]} {[LIT_CHARS --format] [LIT_OTHER "="] [DQ [VarSub format]]} {[VarSub squash]})]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('msg_content', {[DQ [ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub msg_prefix]]}) (Com {[LIT_CHARS sed]} {[DQ [LIT_CHARS "s/,/! /g"]]}) )][VarSub msg_content]]})]) ) (Com {[LIT_CHARS printf]} {[SQ ]} {[DQ [VarSub action][LIT_CHARS " "][VarSub squash][LIT_CHARS " "][VarSub msg_content]]}) (= scope= flags=0 words=[] bindings=[('used', {[DQ [VarSub used][VarSub squash][LIT_CHARS " "]]})]) ) ) ) ) ) ) (Com {[LIT_CHARS cat]} {[DQ [VarSub 1][LIT_CHARS .rearranged]]} < (FilenameRedirectNode filename={[DQ [VarSub 1]]} "> 1), > ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[DQ [VarSub 1][LIT_CHARS .sq]]} {[DQ [VarSub 1][LIT_CHARS .rearranged]]}) ) ) (FunctionDef add_exec_commands [] (AndOr OP_AND_IF (List redirects=[(FilenameRedirectNode filename={[DQ [VarSub 1]]} 0), (FilenameRedirectNode filename={[DQ [VarSub 1][LIT_CHARS .new]]} "> 1)] (= scope= flags=0 words=[] bindings=[('first', {[LIT_CHARS t]})]) (While (Com {[LIT_CHARS read]} {[LIT_CHARS -r]} {[LIT_CHARS insn]} {[LIT_CHARS rest]}) (List (Case to_match={[VarSub insn]}, pat_word_list=[[{[LIT_CHARS pick]}]] (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub first]]}) (Com {[LIT_CHARS printf]} {[DQ [LIT_CHARS "%s"]]} {[DQ [VarSub cmd]]}) ) ) (Com {[LIT_CHARS printf]} {[DQ [LIT_CHARS "%s %s"][\ LIT_ESCAPED_CHAR "\\n"]]} {[DQ [VarSub insn]]} {[DQ [VarSub rest]]}) (= scope= flags=0 words=[] bindings=[('first', {[SQ ]})]) ) ) (Com {[LIT_CHARS printf]} {[DQ [LIT_CHARS "%s"]]} {[DQ [VarSub cmd]]}) ) (Com {[LIT_CHARS mv]} {[DQ [VarSub 1][LIT_CHARS .new]]} {[DQ [VarSub 1]]}) ) ) (FunctionDef check_commit_sha [] (List (= scope= flags=0 words=[] bindings=[('badsha', {[LIT_CHARS 0]})]) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub 1]]}) (= scope= flags=0 words=[] bindings=[('badsha', {[LIT_CHARS 1]})]) (ElseTrue) (List (= scope= flags=0 words=[] bindings=[('sha1_verif', {[DQ [ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --verify]} {[LIT_CHARS --quiet]} {[VarSub 1] [LIT_OTHER "^"] [LIT_LBRACE "{"] [LIT_CHARS commit] [LIT_RBRACE "}"]})]]})]) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub sha1_verif]]}) (= scope= flags=0 words=[] bindings=[('badsha', {[LIT_CHARS 1]})]) ) ) ) (If (Com {[LIT_CHARS test]} {[VarSub badsha]} {[LIT_CHARS -ne]} {[LIT_CHARS 0]}) (List (= scope= flags=0 words=[] bindings=[('line', {[DQ [ComSub (Com {[LIT_CHARS sed]} {[LIT_CHARS -n]} {[LIT_CHARS -e]} {[DQ [VarSub 2][LIT_CHARS p]]} {[DQ [VarSub 3]]})]]})]) (Com {[LIT_CHARS warn]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Warning: the SHA-1 is missing or isn't a commit in the following line:\n"][LIT_CHARS " - "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS line]]})]]}) (Com {[LIT_CHARS warn]}) ) ) (Com {[LIT_CHARS return]} {[VarSub badsha]}) ) ) (FunctionDef check_bad_cmd_and_sha [] (List (= scope= flags=0 words=[] bindings=[('retval', {[LIT_CHARS 0]})]) (= scope= flags=0 words=[] bindings=[('lineno', {[LIT_CHARS 0]})]) (While (Com {[LIT_CHARS read]} {[LIT_CHARS -r]} {[LIT_CHARS command]} {[LIT_CHARS rest]}) (List (= scope= flags=0 words=[] bindings=[('lineno', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub lineno]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})]) (Case to_match={[VarSub command]}, pat_word_list=[[{[DQ [VarSub comment_char]] [LIT_OTHER "*"]}, {[SQ ]}, {[LIT_CHARS noop]}, {[LIT_CHARS x]}, {[LIT_CHARS exec]}], [{[DQ [VarSub cr]]}], [{[LIT_CHARS pick]}, {[LIT_CHARS p]}, {[LIT_CHARS drop]}, {[LIT_CHARS d]}, {[LIT_CHARS reword]}, {[LIT_CHARS r]}, {[LIT_CHARS edit]}, {[LIT_CHARS e]}, {[LIT_CHARS squash]}, {[LIT_CHARS s]}, {[LIT_CHARS fixup]}, {[LIT_CHARS f]}], [{[LIT_OTHER "*"]}]] (ElseTrue) (ElseTrue) (If (Pipeline! (Com {[LIT_CHARS check_commit_sha]} {[DQ [VarSub rest transform_ops=[VS_UNARY_DPERCENT {[LIT_CHARS "[ \t]*"]}]]]} {[DQ [VarSub lineno]]} {[DQ [VarSub 1]]}) ) (= scope= flags=0 words=[] bindings=[('retval', {[LIT_CHARS 1]})]) ) (List (= scope= flags=0 words=[] bindings=[('line', {[DQ [ComSub (Com {[LIT_CHARS sed]} {[LIT_CHARS -n]} {[LIT_CHARS -e]} {[DQ [VarSub lineno][LIT_CHARS p]]} {[DQ [VarSub 1]]})]]})]) (Com {[LIT_CHARS warn]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Warning: the command isn't recognized in the following line:\n"][LIT_CHARS " - "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS line]]})]]}) (Com {[LIT_CHARS warn]}) (= scope= flags=0 words=[] bindings=[('retval', {[LIT_CHARS 1]})]) ) ) ) ) (Com {[LIT_CHARS return]} {[VarSub retval]}) ) ) (FunctionDef todo_list_to_sha_list [] (Pipeline (Com {[LIT_CHARS git]} {[LIT_CHARS stripspace]} {[LIT_CHARS --strip-comments]}) (While (Com {[LIT_CHARS read]} {[LIT_CHARS -r]} {[LIT_CHARS command]} {[LIT_CHARS sha1]} {[LIT_CHARS rest]}) (Case to_match={[VarSub command]}, pat_word_list=[[{[DQ [VarSub comment_char]] [LIT_OTHER "*"]}, {[SQ ]}, {[LIT_CHARS noop]}, {[LIT_CHARS x]}, {[DQ [LIT_CHARS exec]]}], [{[LIT_OTHER "*"]}]] (ElseTrue) (List (= scope= flags=0 words=[] bindings=[('long_sha', {[ComSub (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS git]} {[LIT_CHARS rev-list]} {[LIT_CHARS --no-walk]} {[DQ [VarSub sha1]]})]})]) (Com {[LIT_CHARS printf]} {[DQ [LIT_CHARS "%s"][\ LIT_ESCAPED_CHAR "\\n"]]} {[DQ [VarSub long_sha]]}) ) ) ) ) ) (FunctionDef warn_lines [] (While (Com {[LIT_CHARS read]} {[LIT_CHARS -r]} {[LIT_CHARS line]}) (Com {[LIT_CHARS warn]} {[DQ [LIT_CHARS " - "][VarSub line]]}) ) ) (FunctionDef checkout_onto [] (List (= scope= flags=0 words=[] bindings=[('GIT_REFLOG_ACTION', {[DQ [VarSub GIT_REFLOG_ACTION][LIT_CHARS ": checkout "][VarSub onto_name]]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS output]} {[LIT_CHARS git]} {[LIT_CHARS checkout]} {[VarSub onto]}) (Com {[LIT_CHARS die_abort]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "could not detach HEAD"]]})]]}) ) (Com {[LIT_CHARS git]} {[LIT_CHARS update-ref]} {[LIT_CHARS ORIG_HEAD]} {[VarSub orig_head]}) ) ) (FunctionDef get_missing_commit_check_level [] (List (= scope= flags=0 words=[] bindings=[('check_level', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS --get]} {[LIT_CHARS rebase.missingCommitsCheck]})]})]) (= scope= flags=0 words=[] bindings=[('check_level', {[VarSub check_level test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS ignore]}]})]) (Pipeline (Com {[LIT_CHARS printf]} {[SQ ]} {[DQ [VarSub check_level]]}) (Com {[LIT_CHARS tr]} {[SQ ]} {[SQ ]}) ) ) ) (FunctionDef check_todo_list [] (List (= scope= flags=0 words=[] bindings=[('raise_error', {[LIT_CHARS f]})]) (= scope= flags=0 words=[] bindings=[('check_level', {[ComSub (Com {[LIT_CHARS get_missing_commit_check_level]})]})]) (Case to_match={[DQ [VarSub check_level]]}, pat_word_list=[[{[LIT_CHARS warn]}, {[LIT_CHARS error]}], [{[LIT_CHARS ignore]}], [{[LIT_OTHER "*"]}]] (List (Com {[LIT_CHARS todo_list_to_sha_list]} < (FilenameRedirectNode filename={[DQ [VarSub todo]] [LIT_CHARS .backup]} 0), (FilenameRedirectNode filename={[DQ [VarSub todo]] [LIT_CHARS .oldsha1]} "> 1), > ) (Com {[LIT_CHARS todo_list_to_sha_list]} < (FilenameRedirectNode filename={[DQ [VarSub todo]]} 0), (FilenameRedirectNode filename={[DQ [VarSub todo]] [LIT_CHARS .newsha1]} "> 1), > ) (Com {[LIT_CHARS sort]} {[LIT_CHARS -u]} {[DQ [VarSub todo]] [LIT_CHARS .oldsha1]} < (FilenameRedirectNode filename={[DQ [VarSub todo]] [LIT_CHARS .oldsha1] [LIT_OTHER "+"]} "> 1), > ) (Com {[LIT_CHARS mv]} {[DQ [VarSub todo]] [LIT_CHARS .oldsha1] [LIT_OTHER "+"]} {[DQ [VarSub todo]] [LIT_CHARS .oldsha1]}) (Com {[LIT_CHARS sort]} {[LIT_CHARS -u]} {[DQ [VarSub todo]] [LIT_CHARS .newsha1]} < (FilenameRedirectNode filename={[DQ [VarSub todo]] [LIT_CHARS .newsha1] [LIT_OTHER "+"]} "> 1), > ) (Com {[LIT_CHARS mv]} {[DQ [VarSub todo]] [LIT_CHARS .newsha1] [LIT_OTHER "+"]} {[DQ [VarSub todo]] [LIT_CHARS .newsha1]}) (Com {[LIT_CHARS comm]} {[LIT_CHARS -2]} {[LIT_CHARS -3]} {[DQ [VarSub todo]] [LIT_CHARS .oldsha1]} {[DQ [VarSub todo]] [LIT_CHARS .newsha1]} < (FilenameRedirectNode filename={[DQ [VarSub todo]] [LIT_CHARS .miss]} "> 1), > ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -s]} {[DQ [VarSub todo]] [LIT_CHARS .miss]}) (List (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[DQ [VarSub check_level]]} {[LIT_OTHER "="]} {[LIT_CHARS error]}) (= scope= flags=0 words=[] bindings=[('raise_error', {[LIT_CHARS t]})]) ) (Com {[LIT_CHARS warn]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "Warning: some commits may have been dropped accidentally.\n"][LIT_CHARS "Dropped commits (newer to older):"]]})]]}) (= scope= flags=0 words=[] bindings=[('opt', {[DQ [LIT_CHARS "--no-walk=sorted --format=oneline --abbrev-commit --stdin"]]})]) (Pipeline (Com {[LIT_CHARS git]} {[LIT_CHARS rev-list]} {[VarSub opt]} < (FilenameRedirectNode filename={[DQ [VarSub todo]] [LIT_CHARS .miss]} 0), > ) (Com {[LIT_CHARS warn_lines]}) ) (Com {[LIT_CHARS warn]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "To avoid this message, use "][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS drop][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS " to explicitly remove a commit.\n"][LIT_CHARS "\n"][LIT_CHARS "Use 'git config rebase.missingCommitsCheck' to change the level of warnings.\n"][LIT_CHARS "The possible behaviours are: ignore, warn, error."]]})]]}) (Com {[LIT_CHARS warn]}) ) ) ) (ElseTrue) (Com {[LIT_CHARS warn]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Unrecognized setting "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "check_level for option rebase.missingCommitsCheck. Ignoring."]]})]]}) ) (If (Pipeline! (Com {[LIT_CHARS check_bad_cmd_and_sha]} {[DQ [VarSub todo]]}) ) (= scope= flags=0 words=[] bindings=[('raise_error', {[LIT_CHARS t]})]) ) (If (Com {[LIT_CHARS test]} {[VarSub raise_error]} {[LIT_OTHER "="]} {[LIT_CHARS t]}) (List (Com {[LIT_CHARS checkout_onto]}) (Com {[LIT_CHARS warn]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "You can fix this with 'git rebase --edit-todo' and then run 'git rebase --continue'."]]})]]}) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "Or you can abort the rebase with 'git rebase --abort'."]]})]]}) ) ) ) ) (FunctionDef git_rebase__interactive [] (List (Case to_match={[DQ [VarSub action]]}, pat_word_list=[[{[LIT_CHARS continue]}], [{[LIT_CHARS skip]}], [{[LIT_CHARS edit-todo]}]] (List (If (Com {[LIT_CHARS git]} {[LIT_CHARS diff-index]} {[LIT_CHARS --cached]} {[LIT_CHARS --quiet]} {[LIT_CHARS HEAD]} {[LIT_CHARS --]}) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_OTHER "!"]} {[LIT_CHARS -f]} {[DQ [VarSub GIT_DIR]] [LIT_CHARS /CHERRY_PICK_HEAD]}) (AndOr OP_OR_IF (Com {[LIT_CHARS rm]} {[DQ [VarSub GIT_DIR]] [LIT_CHARS /CHERRY_PICK_HEAD]}) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "Could not remove CHERRY_PICK_HEAD"]]})]]}) ) ) (ElseTrue) (List (If (Pipeline! (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[DQ [VarSub author_script]]}) ) (List (= scope= flags=0 words=[] bindings=[('gpg_sign_opt_quoted', {[VarSub gpg_sign_opt test_op=VS_TEST_COLON_PLUS {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --sq-quote]} {[DQ [VarSub gpg_sign_opt]]})]}]})]) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "You have staged changes in your working tree.\n"][LIT_CHARS "If these changes are meant to be\n"][LIT_CHARS "squashed into the previous commit, run:\n"][LIT_CHARS "\n"][LIT_CHARS " git commit --amend "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "gpg_sign_opt_quoted\n"][LIT_CHARS "\n"][LIT_CHARS "If they are meant to go into a new commit, run:\n"][LIT_CHARS "\n"][LIT_CHARS " git commit "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "gpg_sign_opt_quoted\n"][LIT_CHARS "\n"][LIT_CHARS "In both cases, once you're done, continue with:\n"][LIT_CHARS "\n"][LIT_CHARS " git rebase --continue\n"]]})]]}) ) ) (AndOr OP_OR_IF (Com {[LIT_CHARS .]} {[DQ [VarSub author_script]]}) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "Error trying to find the author identity to amend commit"]]})]]}) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[DQ [VarSub amend]]}) (List (= scope= flags=0 words=[] bindings=[('current_head', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --verify]} {[LIT_CHARS HEAD]})]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[DQ [VarSub current_head]]} {[LIT_OTHER "="]} {[ComSub (Com {[LIT_CHARS cat]} {[DQ [VarSub amend]]})]}) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "You have uncommitted changes in your working tree. Please commit them\n"][LIT_CHARS "first and then run 'git rebase --continue' again."]]})]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS do_with_author]} {[LIT_CHARS git]} {[LIT_CHARS commit]} {[LIT_CHARS --amend]} {[LIT_CHARS --no-verify]} {[LIT_CHARS -F]} {[DQ [VarSub msg]]} {[LIT_CHARS -e]} {[VarSub gpg_sign_opt test_op=VS_TEST_COLON_PLUS {[DQ [VarSub gpg_sign_opt]]}]}) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "Could not commit staged changes."]]})]]}) ) ) (ElseTrue) (AndOr OP_OR_IF (Com {[LIT_CHARS do_with_author]} {[LIT_CHARS git]} {[LIT_CHARS commit]} {[LIT_CHARS --no-verify]} {[LIT_CHARS -F]} {[DQ [VarSub msg]]} {[LIT_CHARS -e]} {[VarSub gpg_sign_opt test_op=VS_TEST_COLON_PLUS {[DQ [VarSub gpg_sign_opt]]}]}) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "Could not commit staged changes."]]})]]}) ) ) ) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -r]} {[DQ [VarSub state_dir]] [LIT_CHARS /stopped-sha]}) (Com {[LIT_CHARS record_in_rewritten]} {[DQ [ComSub (Com {[LIT_CHARS cat]} {[DQ [VarSub state_dir]] [LIT_CHARS /stopped-sha]})]]}) ) (Com {[LIT_CHARS require_clean_work_tree]} {[DQ [LIT_CHARS rebase]]}) (Com {[LIT_CHARS do_rest]}) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]}) ) (List (Com {[LIT_CHARS git]} {[LIT_CHARS rerere]} {[LIT_CHARS clear]}) (Com {[LIT_CHARS do_rest]}) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]}) ) (List (Com {[LIT_CHARS git]} {[LIT_CHARS stripspace]} {[LIT_CHARS --strip-comments]} < (FilenameRedirectNode filename={[DQ [VarSub todo]]} 0), (FilenameRedirectNode filename={[DQ [VarSub todo]] [LIT_CHARS .new]} "> 1), > ) (Com {[LIT_CHARS mv]} {[LIT_CHARS -f]} {[DQ [VarSub todo]] [LIT_CHARS .new]} {[DQ [VarSub todo]]}) (Com {[LIT_CHARS collapse_todo_ids]}) (Com {[LIT_CHARS append_todo_help]}) (Pipeline (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "You are editing the todo file of an ongoing interactive rebase.\n"][LIT_CHARS "To continue rebase after editing, run:\n"][LIT_CHARS " git rebase --continue\n"][LIT_CHARS "\n"]]}) (Com {[LIT_CHARS git]} {[LIT_CHARS stripspace]} {[LIT_CHARS --comment-lines]} < (FilenameRedirectNode filename={[DQ [VarSub todo]]} >"> 1), > ) ) (AndOr OP_OR_IF (Com {[LIT_CHARS git_sequence_editor]} {[DQ [VarSub todo]]}) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "Could not execute editor"]]})]]}) ) (Com {[LIT_CHARS expand_todo_ids]}) (Com {[LIT_CHARS exit]}) ) ) (Com {[LIT_CHARS comment_for_reflog]} {[LIT_CHARS start]}) (If (Com {[LIT_CHARS test]} {[LIT_OTHER "!"]} {[LIT_CHARS -z]} {[DQ [VarSub switch_to]]}) (List (= scope= flags=0 words=[] bindings=[('GIT_REFLOG_ACTION', {[DQ [VarSub GIT_REFLOG_ACTION][LIT_CHARS ": checkout "][VarSub switch_to]]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS output]} {[LIT_CHARS git]} {[LIT_CHARS checkout]} {[DQ [VarSub switch_to]]} {[LIT_CHARS --]}) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Could not checkout "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS switch_to]]})]]}) ) (Com {[LIT_CHARS comment_for_reflog]} {[LIT_CHARS start]}) ) ) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('orig_head', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --verify]} {[LIT_CHARS HEAD]})]})]) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "No HEAD?"]]})]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub state_dir]]}) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Could not create temporary "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS state_dir]]})]]}) ) (AndOr OP_OR_IF (Com {[LIT_OTHER ":"]} < (FilenameRedirectNode filename={[DQ [VarSub state_dir]] [LIT_CHARS /interactive]} "> 1), > ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "Could not mark as interactive"]]})]]}) ) (Com {[LIT_CHARS write_basic_state]}) (If (Com {[LIT_CHARS test]} {[LIT_CHARS t]} {[LIT_OTHER "="]} {[DQ [VarSub preserve_merges]]}) (List (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub rebase_root]]}) (AndOr OP_AND_IF (Com {[LIT_CHARS mkdir]} {[DQ [VarSub rewritten]]}) (For c [{[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS merge-base]} {[LIT_CHARS --all]} {[VarSub orig_head]} {[VarSub upstream]})]}]) (AndOr OP_OR_IF (Com {[LIT_CHARS echo]} {[VarSub onto]} < (FilenameRedirectNode filename={[DQ [VarSub rewritten]] [LIT_CHARS /] [VarSub c]} "> 1), > ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "Could not init rewritten commits"]]})]]}) ) ) ) (ElseTrue) (AndOr OP_AND_IF (Com {[LIT_CHARS mkdir]} {[DQ [VarSub rewritten]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS echo]} {[VarSub onto]} < (FilenameRedirectNode filename={[DQ [VarSub rewritten]] [LIT_CHARS /root]} "> 1), > ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "Could not init rewritten commits"]]})]]}) ) ) ) (= scope= flags=0 words=[] bindings=[('merges_option', {[SQ ]})]) ) (ElseTrue) (= scope= flags=0 words=[] bindings=[('merges_option', {[DQ [LIT_CHARS "--no-merges --cherry-pick"]]})]) ) (= scope= flags=0 words=[] bindings=[('shorthead', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --short]} {[VarSub orig_head]})]})]) (= scope= flags=0 words=[] bindings=[('shortonto', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --short]} {[VarSub onto]})]})]) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub rebase_root]]}) (List (= scope= flags=0 words=[] bindings=[('shortupstream', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --short]} {[VarSub upstream]})]})]) (= scope= flags=0 words=[] bindings=[('revisions', {[VarSub upstream] [LIT_CHARS ...] [VarSub orig_head]})]) (= scope= flags=0 words=[] bindings=[('shortrevisions', {[VarSub shortupstream] [LIT_CHARS ..] [VarSub shorthead]})]) ) (ElseTrue) (List (= scope= flags=0 words=[] bindings=[('revisions', {[VarSub onto] [LIT_CHARS ...] [VarSub orig_head]})]) (= scope= flags=0 words=[] bindings=[('shortrevisions', {[VarSub shorthead]})]) ) ) (= scope= flags=0 words=[] bindings=[('format', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS --get]} {[LIT_CHARS rebase.instructionFormat]})]})]) (Pipeline (Com {[LIT_CHARS git]} {[LIT_CHARS rev-list]} {[VarSub merges_option]} {[LIT_CHARS --format] [LIT_OTHER "="] [DQ [LIT_CHARS "%m%H "][VarSub format test_op=VS_TEST_COLON_HYPHEN {[LIT_PERCENT "%"] [LIT_CHARS s]}]]} {[LIT_CHARS --reverse]} {[LIT_CHARS --left-right]} {[LIT_CHARS --topo-order]} {[VarSub revisions]} {[VarSub restrict_revision test_op=VS_TEST_PLUS {[LIT_CHARS "^"] [VarSub restrict_revision]}]}) (Com {[LIT_CHARS sed]} {[LIT_CHARS -n]} {[DQ [LIT_CHARS "s/^>//p"]]}) (While (Com {[LIT_CHARS read]} {[LIT_CHARS -r]} {[LIT_CHARS sha1]} {[LIT_CHARS rest]}) (List (If (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub keep_empty]]}) (AndOr OP_AND_IF (Com {[LIT_CHARS is_empty_commit]} {[VarSub sha1]}) (Pipeline! (Com {[LIT_CHARS is_merge_commit]} {[VarSub sha1]}) ) ) ) (= scope= flags=0 words=[] bindings=[('comment_out', {[DQ [VarSub comment_char][LIT_CHARS " "]]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('comment_out', {[SQ ]})]) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS t]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[DQ [VarSub preserve_merges]]}) (Com {[LIT_CHARS printf]} {[SQ ]} {[DQ [VarSub comment_out][LIT_CHARS "pick "][VarSub sha1][LIT_CHARS " "][VarSub rest]]} < (FilenameRedirectNode filename={[DQ [VarSub todo]]} >"> 1), > ) (ElseTrue) (List (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub rebase_root]]}) (List (= scope= flags=0 words=[] bindings=[('preserve', {[LIT_CHARS t]})]) (For p [{[ComSub (Pipeline (Com {[LIT_CHARS git]} {[LIT_CHARS rev-list]} {[LIT_CHARS --parents]} {[LIT_CHARS -1]} {[VarSub sha1]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -d] [SQ ]} {[LIT_CHARS -s]} {[LIT_CHARS -f2-]}) )]}]) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[DQ [VarSub rewritten]] [LIT_CHARS /] [VarSub p]}) (= scope= flags=0 words=[] bindings=[('preserve', {[LIT_CHARS f]})]) ) ) ) (ElseTrue) (= scope= flags=0 words=[] bindings=[('preserve', {[LIT_CHARS f]})]) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS f]} {[LIT_OTHER "="]} {[DQ [VarSub preserve]]}) (List (Com {[LIT_CHARS touch]} {[DQ [VarSub rewritten]] [LIT_CHARS /] [VarSub sha1]}) (Com {[LIT_CHARS printf]} {[SQ ]} {[DQ [VarSub comment_out][LIT_CHARS "pick "][VarSub sha1][LIT_CHARS " "][VarSub rest]]} < (FilenameRedirectNode filename={[DQ [VarSub todo]]} >"> 1), > ) ) ) ) ) ) ) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS t]} {[LIT_OTHER "="]} {[DQ [VarSub preserve_merges]]}) (List (Com {[LIT_CHARS mkdir]} {[DQ [VarSub dropped]]}) (Pipeline (Com {[LIT_CHARS git]} {[LIT_CHARS rev-list]} {[VarSub revisions]} {[LIT_CHARS --left-right]} {[LIT_CHARS --cherry-pick]}) (Com {[LIT_CHARS sed]} {[LIT_CHARS -n]} {[DQ [LIT_CHARS "s/^>//p"]]} < (FilenameRedirectNode filename={[DQ [VarSub state_dir]] [LIT_CHARS /not-cherry-picks]} "> 1), > ) ) (Pipeline (Com {[LIT_CHARS git]} {[LIT_CHARS rev-list]} {[VarSub revisions]}) (While (Com {[LIT_CHARS read]} {[LIT_CHARS rev]}) (If (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[DQ [VarSub rewritten]] [LIT_CHARS /] [VarSub rev]}) (Pipeline! (Com {[LIT_CHARS sane_grep]} {[DQ [VarSub rev]]} {[DQ [VarSub state_dir]] [LIT_CHARS /not-cherry-picks]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) ) ) (List (Pipeline (Com {[LIT_CHARS git]} {[LIT_CHARS rev-list]} {[LIT_CHARS --parents]} {[LIT_CHARS -1]} {[VarSub rev]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -d] [SQ ]} {[LIT_CHARS -s]} {[LIT_CHARS -f2]} < (FilenameRedirectNode filename={[DQ [VarSub dropped]] [LIT_CHARS /] [VarSub rev]} "> 1), > ) ) (= scope= flags=0 words=[] bindings=[('sha1', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-list]} {[LIT_CHARS -1]} {[VarSub rev]})]})]) (Com {[LIT_CHARS sane_grep]} {[LIT_CHARS -v]} {[DQ [LIT_CHARS "^[a-z][a-z]* "][VarSub sha1]]} < (FilenameRedirectNode filename={[DQ [VarSub todo]]} 0), (FilenameRedirectNode filename={[DQ [VarSub todo][LIT_CHARS 2]]} "> 1), > ) (Com {[LIT_CHARS mv]} {[DQ [VarSub todo][LIT_CHARS 2]]} {[DQ [VarSub todo]]}) (Com {[LIT_CHARS rm]} {[DQ [VarSub rewritten]] [LIT_CHARS /] [VarSub rev]}) ) ) ) ) ) ) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -s]} {[DQ [VarSub todo]]}) (Com {[LIT_CHARS echo]} {[LIT_CHARS noop]} < (FilenameRedirectNode filename={[DQ [VarSub todo]]} >"> 1), > ) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub autosquash]]}) (Com {[LIT_CHARS rearrange_squash]} {[DQ [VarSub todo]]}) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub cmd]]}) (Com {[LIT_CHARS add_exec_commands]} {[DQ [VarSub todo]]}) ) (= scope= flags=0 words=[] bindings=[('todocount', {[ComSub (Pipeline (Com redirects=[(FilenameRedirectNode filename={[DQ [VarSub todo]]} 0)]{[LIT_CHARS git]} {[LIT_CHARS stripspace]} {[LIT_CHARS --strip-comments]}) (Com {[LIT_CHARS wc]} {[LIT_CHARS -l]}) )]})]) (= scope= flags=0 words=[] bindings=[('todocount', {[VarSub todocount transform_ops=[VS_UNARY_DPOUND {[LIT_CHARS "* "]}]]})]) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[DQ [VarSub todo]]} >"> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "\n"][VarSub comment_char][LIT_CHARS " "][ComSub (Com {[LIT_CHARS eval_ngettext]} {[DQ [LIT_CHARS "Rebase "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "shortrevisions onto "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "shortonto ("][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "todocount command)"]]} {[DQ [LIT_CHARS "Rebase "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "shortrevisions onto "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "shortonto ("][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "todocount commands)"]]} {[DQ [VarSub todocount]]})][LIT_CHARS "\n"]]} 0), > ) (Com {[LIT_CHARS append_todo_help]}) (Pipeline (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "However, if you remove everything, the rebase will be aborted.\n"][LIT_CHARS "\n"]]}) (Com {[LIT_CHARS git]} {[LIT_CHARS stripspace]} {[LIT_CHARS --comment-lines]} < (FilenameRedirectNode filename={[DQ [VarSub todo]]} >"> 1), > ) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub keep_empty]]}) (Com {[LIT_CHARS printf]} {[SQ ]} {[DQ [VarSub comment_char][LIT_CHARS " "][ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "Note that empty commits are commented out"]]})]]} < (FilenameRedirectNode filename={[DQ [VarSub todo]]} >"> 1), > ) ) (AndOr OP_OR_IF (Com {[LIT_CHARS has_action]} {[DQ [VarSub todo]]}) (Com {[LIT_CHARS return]} {[LIT_CHARS 2]}) ) (Com {[LIT_CHARS cp]} {[DQ [VarSub todo]]} {[DQ [VarSub todo]] [LIT_CHARS .backup]}) (Com {[LIT_CHARS collapse_todo_ids]}) (AndOr OP_OR_IF (Com {[LIT_CHARS git_sequence_editor]} {[DQ [VarSub todo]]}) (Com {[LIT_CHARS die_abort]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "Could not execute editor"]]})]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS has_action]} {[DQ [VarSub todo]]}) (Com {[LIT_CHARS return]} {[LIT_CHARS 2]}) ) (Com {[LIT_CHARS check_todo_list]}) (Com {[LIT_CHARS expand_todo_ids]}) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -d]} {[DQ [VarSub rewritten]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub force_rebase]]}) (Com {[LIT_CHARS skip_unnecessary_picks]}) ) ) (Com {[LIT_CHARS checkout_onto]}) (Com {[LIT_CHARS do_rest]}) ) ) (Com {[LIT_CHARS git_rebase__interactive]}) )