(List (= scope= flags=0 words=[] bindings=[('SUBDIRECTORY_OK', {[LIT_CHARS Yes]})]) (= scope= flags=0 words=[] bindings=[('OPTIONS_KEEPDASHDASH', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('OPTIONS_STUCKLONG', {[LIT_CHARS t]})]) (= scope= flags=0 words=[] bindings=[('OPTIONS_SPEC', {[DQ [LIT_CHARS "git rebase [-i] [options] [--exec ] [--onto ] [] []\n"][LIT_CHARS "git rebase [-i] [options] [--exec ] [--onto ] --root []\n"][LIT_CHARS "git-rebase --continue | --abort | --skip | --edit-todo\n"][LIT_CHARS "--\n"][LIT_CHARS " Available options are\n"][LIT_CHARS "v,verbose! display a diffstat of what changed upstream\n"][LIT_CHARS "q,quiet! be quiet. implies --no-stat\n"][LIT_CHARS "autostash automatically stash/stash pop before and after\n"][LIT_CHARS "fork-point use 'merge-base --fork-point' to refine upstream\n"][LIT_CHARS "onto=! rebase onto given branch instead of upstream\n"][LIT_CHARS "p,preserve-merges! try to recreate merges instead of ignoring them\n"][LIT_CHARS "s,strategy=! use the given merge strategy\n"][LIT_CHARS "no-ff! cherry-pick all commits, even if unchanged\n"][LIT_CHARS "m,merge! use merging strategies to rebase\n"][LIT_CHARS "i,interactive! let the user edit the list of commits to rebase\n"][LIT_CHARS "x,exec=! add exec lines after each commit of the editable list\n"][LIT_CHARS "k,keep-empty\t preserve empty commits during rebase\n"][LIT_CHARS "f,force-rebase! force rebase even if branch is up to date\n"][LIT_CHARS "X,strategy-option=! pass the argument through to the merge strategy\n"][LIT_CHARS "stat! display a diffstat of what changed upstream\n"][LIT_CHARS "n,no-stat! do not show diffstat of what changed upstream\n"][LIT_CHARS "verify allow pre-rebase hook to run\n"][LIT_CHARS "rerere-autoupdate allow rerere to update index with resolved conflicts\n"][LIT_CHARS "root! rebase all reachable commits up to the root(s)\n"][LIT_CHARS "autosquash move commits that begin with squash!/fixup! under -i\n"][LIT_CHARS "committer-date-is-author-date! passed to 'git am'\n"][LIT_CHARS "ignore-date! passed to 'git am'\n"][LIT_CHARS "whitespace=! passed to 'git apply'\n"][LIT_CHARS "ignore-whitespace! passed to 'git apply'\n"][LIT_CHARS "C=! passed to 'git apply'\n"][LIT_CHARS "S,gpg-sign? GPG-sign commits\n"][LIT_CHARS " Actions:\n"][LIT_CHARS "continue! continue\n"][LIT_CHARS "abort! abort and check out the original branch\n"][LIT_CHARS "skip! skip current patch and continue\n"][LIT_CHARS "edit-todo! edit the todo list during an interactive rebase\n"]]})]) (Com {[LIT_CHARS .]} {[LIT_CHARS git-sh-setup]}) (Com {[LIT_CHARS set_reflog_action]} {[LIT_CHARS rebase]}) (Com {[LIT_CHARS require_work_tree_exists]}) (Com {[LIT_CHARS cd_to_toplevel]}) (= scope= flags=0 words=[] bindings=[('LF', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('ok_to_skip_pre_rebase', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('resolvemsg', {[DQ [LIT_CHARS "\n"][ComSub (Com {[LIT_CHARS gettext]} {[SQ ]})][LIT_CHARS "\n"]]})]) (Com {[LIT_CHARS unset]} {[LIT_CHARS onto]}) (Com {[LIT_CHARS unset]} {[LIT_CHARS restrict_revision]}) (= scope= flags=0 words=[] bindings=[('cmd', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('strategy', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('strategy_opts', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('do_merge', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('merge_dir', {[DQ [VarSub GIT_DIR]] [LIT_CHARS /rebase-merge]})]) (= scope= flags=0 words=[] bindings=[('apply_dir', {[DQ [VarSub GIT_DIR]] [LIT_CHARS /rebase-apply]})]) (= scope= flags=0 words=[] bindings=[('verbose', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('diffstat', {[SQ ]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[DQ [ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS --bool]} {[LIT_CHARS rebase.stat]})]]} {[LIT_OTHER "="]} {[LIT_CHARS true]}) (= scope= flags=0 words=[] bindings=[('diffstat', {[LIT_CHARS t]})]) ) (= scope= flags=0 words=[] bindings=[('autostash', {[DQ [ComSub (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS --bool]} {[LIT_CHARS rebase.autostash]}) (Com {[LIT_CHARS echo]} {[LIT_CHARS false]}) )]]})]) (= scope= flags=0 words=[] bindings=[('fork_point', {[LIT_CHARS auto]})]) (= scope= flags=0 words=[] bindings=[('git_am_opt', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('rebase_root', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('force_rebase', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('allow_rerere_autoupdate', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('in_progress', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('type', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('state_dir', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('action', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('preserve_merges', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('autosquash', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('keep_empty', {[SQ ]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[DQ [ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS --bool]} {[LIT_CHARS rebase.autosquash]})]]} {[LIT_OTHER "="]} {[DQ [LIT_CHARS true]]}) (= scope= flags=0 words=[] bindings=[('autosquash', {[LIT_CHARS t]})]) ) (Case to_match={[DQ [ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS --bool]} {[LIT_CHARS commit.gpgsign]})]]}, pat_word_list=[[{[LIT_CHARS true]}], [{[LIT_OTHER "*"]}]] (= scope= flags=0 words=[] bindings=[('gpg_sign_opt', {[LIT_CHARS -S]})]) (= scope= flags=0 words=[] bindings=[('gpg_sign_opt', {[SQ ]})]) ) (FunctionDef read_basic_state [] (List (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[DQ [VarSub state_dir][LIT_CHARS /head-name]]}) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[DQ [VarSub state_dir][LIT_CHARS /onto]]}) (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('head_name', {[ComSub (Com {[LIT_CHARS cat]} {[DQ [VarSub state_dir]] [LIT_CHARS /head-name]})]})]) (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('onto', {[ComSub (Com {[LIT_CHARS cat]} {[DQ [VarSub state_dir]] [LIT_CHARS /onto]})]})]) (AndOr OP_AND_IF (If (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[DQ [VarSub state_dir]] [LIT_CHARS /orig-head]}) (= scope= flags=0 words=[] bindings=[('orig_head', {[ComSub (Com {[LIT_CHARS cat]} {[DQ [VarSub state_dir]] [LIT_CHARS /orig-head]})]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('orig_head', {[ComSub (Com {[LIT_CHARS cat]} {[DQ [VarSub state_dir]] [LIT_CHARS /head]})]})]) ) (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('GIT_QUIET', {[ComSub (Com {[LIT_CHARS cat]} {[DQ [VarSub state_dir]] [LIT_CHARS /quiet]})]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[DQ [VarSub state_dir]] [LIT_CHARS /verbose]}) (= scope= flags=0 words=[] bindings=[('verbose', {[LIT_CHARS t]})]) ) ) ) ) ) ) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[DQ [VarSub state_dir]] [LIT_CHARS /strategy]}) (= scope= flags=0 words=[] bindings=[('strategy', {[DQ [ComSub (Com {[LIT_CHARS cat]} {[DQ [VarSub state_dir]] [LIT_CHARS /strategy]})]]})]) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[DQ [VarSub state_dir]] [LIT_CHARS /strategy_opts]}) (= scope= flags=0 words=[] bindings=[('strategy_opts', {[DQ [ComSub (Com {[LIT_CHARS cat]} {[DQ [VarSub state_dir]] [LIT_CHARS /strategy_opts]})]]})]) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[DQ [VarSub state_dir]] [LIT_CHARS /allow_rerere_autoupdate]}) (= scope= flags=0 words=[] bindings=[('allow_rerere_autoupdate', {[DQ [ComSub (Com {[LIT_CHARS cat]} {[DQ [VarSub state_dir]] [LIT_CHARS /allow_rerere_autoupdate]})]]})]) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[DQ [VarSub state_dir]] [LIT_CHARS /gpg_sign_opt]}) (= scope= flags=0 words=[] bindings=[('gpg_sign_opt', {[DQ [ComSub (Com {[LIT_CHARS cat]} {[DQ [VarSub state_dir]] [LIT_CHARS /gpg_sign_opt]})]]})]) ) ) ) (FunctionDef write_basic_state [] (List (AndOr OP_AND_IF (Com {[LIT_CHARS echo]} {[DQ [VarSub head_name]]} < (FilenameRedirectNode filename={[DQ [VarSub state_dir]] [LIT_CHARS /head-name]} "> 1), > ) (AndOr OP_AND_IF (Com {[LIT_CHARS echo]} {[DQ [VarSub onto]]} < (FilenameRedirectNode filename={[DQ [VarSub state_dir]] [LIT_CHARS /onto]} "> 1), > ) (AndOr OP_AND_IF (Com {[LIT_CHARS echo]} {[DQ [VarSub orig_head]]} < (FilenameRedirectNode filename={[DQ [VarSub state_dir]] [LIT_CHARS /orig-head]} "> 1), > ) (AndOr OP_AND_IF (Com {[LIT_CHARS echo]} {[DQ [VarSub GIT_QUIET]]} < (FilenameRedirectNode filename={[DQ [VarSub state_dir]] [LIT_CHARS /quiet]} "> 1), > ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS t]} {[LIT_OTHER "="]} {[DQ [VarSub verbose]]}) (Com {[LIT_OTHER ":"]} < (FilenameRedirectNode filename={[DQ [VarSub state_dir]] [LIT_CHARS /verbose]} "> 1), > ) ) ) ) ) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub strategy]]}) (Com {[LIT_CHARS echo]} {[DQ [VarSub strategy]]} < (FilenameRedirectNode filename={[DQ [VarSub state_dir]] [LIT_CHARS /strategy]} "> 1), > ) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub strategy_opts]]}) (Com {[LIT_CHARS echo]} {[DQ [VarSub strategy_opts]]} < (FilenameRedirectNode filename={[DQ [VarSub state_dir]] [LIT_CHARS /strategy_opts]} "> 1), > ) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub allow_rerere_autoupdate]]}) (Com {[LIT_CHARS echo]} {[DQ [VarSub allow_rerere_autoupdate]]} < (FilenameRedirectNode filename={[DQ [VarSub state_dir]] [LIT_CHARS /allow_rerere_autoupdate]} "> 1), > ) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub gpg_sign_opt]]}) (Com {[LIT_CHARS echo]} {[DQ [VarSub gpg_sign_opt]]} < (FilenameRedirectNode filename={[DQ [VarSub state_dir]] [LIT_CHARS /gpg_sign_opt]} "> 1), > ) ) ) ) (FunctionDef output [] (Case to_match={[DQ [VarSub verbose]]}, pat_word_list=[[{[SQ ]}], [{[LIT_OTHER "*"]}]] (List (= scope= flags=0 words=[] bindings=[('output', {[ComSub (Com redirects=[(DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2)]{[DQ [VarSub @]]})]})]) (= scope= flags=0 words=[] bindings=[('status', {[VarSub ?]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[VarSub status]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[LIT_CHARS 0]}) (Com {[LIT_CHARS printf]} {[DQ [LIT_CHARS "%s"][\ LIT_ESCAPED_CHAR "\\n"]]} {[DQ [VarSub output]]}) ) (Com {[LIT_CHARS return]} {[VarSub status]}) ) (Com {[DQ [VarSub @]]}) ) ) (FunctionDef move_to_original_branch [] (Case to_match={[DQ [VarSub head_name]]}, pat_word_list=[[{[LIT_CHARS refs/] [LIT_OTHER "*"]}]] (List (= scope= flags=0 words=[] bindings=[('message', {[DQ [LIT_CHARS "rebase finished: "][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]} {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS HEAD]})]} {[VarSub orig_head]}) (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS symbolic-ref]} {[LIT_CHARS -m]} {[DQ [LIT_CHARS "rebase finished: returning to "][VarSub head_name]]} {[LIT_CHARS HEAD]} {[VarSub head_name]}) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Could not move back to "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS head_name]]})]]}) ) ) ) ) ) (FunctionDef apply_autostash [] (If (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[DQ [VarSub state_dir][LIT_CHARS /autostash]]}) (List (= scope= flags=0 words=[] bindings=[('stash_sha1', {[ComSub (Com {[LIT_CHARS cat]} {[DQ [VarSub state_dir][LIT_CHARS /autostash]]})]})]) (If (Com {[LIT_CHARS git]} {[LIT_CHARS stash]} {[LIT_CHARS apply]} {[VarSub stash_sha1]} < (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[SQ ]})]]}) (ElseTrue) (List (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS stash]} {[LIT_CHARS store]} {[LIT_CHARS -m]} {[DQ [LIT_CHARS autostash]]} {[LIT_CHARS -q]} {[VarSub stash_sha1]}) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Cannot store "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS stash_sha1]]})]]}) ) (Com {[LIT_CHARS gettext]} {[SQ ]}) ) ) ) ) ) (FunctionDef finish_rebase [] (AndOr OP_AND_IF (Com {[LIT_CHARS apply_autostash]}) (AndOr OP_AND_IF (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS gc]} {[LIT_CHARS --auto]}) (Com {[LIT_CHARS true]}) ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[DQ [VarSub state_dir]]}) ) ) ) (FunctionDef run_specific_rebase [] (List (If (Com {[LIT_OTHER "["]} {[DQ [VarSub interactive_rebase]]} {[LIT_OTHER "="]} {[LIT_CHARS implied]} {[LIT_OTHER "]"]}) (List (= scope= flags=0 words=[] bindings=[('GIT_EDITOR', {[LIT_OTHER ":"]})]) (= scope= flags=1 words=[{[LIT_CHARS GIT_EDITOR]}] bindings=[]) (= scope= flags=0 words=[] bindings=[('autosquash', {[SQ ]})]) ) ) (Com {[LIT_CHARS .]} {[LIT_CHARS git-rebase--] [VarSub type]}) (= scope= flags=0 words=[] bindings=[('ret', {[VarSub ?]})]) (If (Com {[LIT_CHARS test]} {[VarSub ret]} {[LIT_CHARS -eq]} {[LIT_CHARS 0]}) (Com {[LIT_CHARS finish_rebase]}) (Com {[LIT_CHARS test]} {[VarSub ret]} {[LIT_CHARS -eq]} {[LIT_CHARS 2]}) (AndOr OP_AND_IF (Com {[LIT_CHARS apply_autostash]}) (AndOr OP_AND_IF (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[DQ [VarSub state_dir]]}) (Com {[LIT_CHARS die]} {[DQ [LIT_CHARS "Nothing to do"]]}) ) ) ) (Com {[LIT_CHARS exit]} {[VarSub ret]}) ) ) (FunctionDef run_pre_rebase_hook [] (If (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub ok_to_skip_pre_rebase]]}) (Com {[LIT_CHARS test]} {[LIT_CHARS -x]} {[DQ [ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --git-path]} {[LIT_CHARS hooks/pre-rebase]})]]}) ) (AndOr OP_OR_IF (Com {[DQ [ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --git-path]} {[LIT_CHARS hooks/pre-rebase]})]]} {[VarSub 1 test_op=VS_TEST_PLUS {[DQ [VarSub @]]}]}) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "The pre-rebase hook refused to rebase."]]})]]}) ) ) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[DQ [VarSub apply_dir]] [LIT_CHARS /applying]}) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "It looks like git-am is in progress. Cannot rebase."]]})]]}) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -d]} {[DQ [VarSub apply_dir]]}) (List (= scope= flags=0 words=[] bindings=[('type', {[LIT_CHARS am]})]) (= scope= flags=0 words=[] bindings=[('state_dir', {[DQ [VarSub apply_dir]]})]) ) (Com {[LIT_CHARS test]} {[LIT_CHARS -d]} {[DQ [VarSub merge_dir]]}) (List (If (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[DQ [VarSub merge_dir]] [LIT_CHARS /interactive]}) (List (= scope= flags=0 words=[] bindings=[('type', {[LIT_CHARS interactive]})]) (= scope= flags=0 words=[] bindings=[('interactive_rebase', {[LIT_CHARS explicit]})]) ) (ElseTrue) (= scope= flags=0 words=[] bindings=[('type', {[LIT_CHARS merge]})]) ) (= scope= flags=0 words=[] bindings=[('state_dir', {[DQ [VarSub merge_dir]]})]) ) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub type]]}) (= scope= flags=0 words=[] bindings=[('in_progress', {[LIT_CHARS t]})]) ) (= scope= flags=0 words=[] bindings=[('total_argc', {[VarSub #]})]) (While (Com {[LIT_CHARS test]} {[VarSub #]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[LIT_CHARS 0]}) (List (Case to_match={[DQ [VarSub 1]]}, pat_word_list=[[{[LIT_CHARS --no-verify]}], [{[LIT_CHARS --verify]}], [{[LIT_CHARS --continue]}, {[LIT_CHARS --skip]}, {[LIT_CHARS --abort]}, {[LIT_CHARS --edit-todo]}], [{[LIT_CHARS --onto] [LIT_OTHER "="] [LIT_OTHER "*"]}], [{[LIT_CHARS --exec] [LIT_OTHER "="] [LIT_OTHER "*"]}], [{[LIT_CHARS --interactive]}], [{[LIT_CHARS --keep-empty]}], [{[LIT_CHARS --preserve-merges]}], [{[LIT_CHARS --autosquash]}], [{[LIT_CHARS --no-autosquash]}], [{[LIT_CHARS --fork-point]}], [{[LIT_CHARS --no-fork-point]}], [{[LIT_CHARS --merge]}], [{[LIT_CHARS --strategy-option] [LIT_OTHER "="] [LIT_OTHER "*"]}], [{[LIT_CHARS --strategy] [LIT_OTHER "="] [LIT_OTHER "*"]}], [{[LIT_CHARS --no-stat]}], [{[LIT_CHARS --stat]}], [{[LIT_CHARS --autostash]}], [{[LIT_CHARS --no-autostash]}], [{[LIT_CHARS --verbose]}], [{[LIT_CHARS --quiet]}], [{[LIT_CHARS --whitespace] [LIT_OTHER "="] [LIT_OTHER "*"]}], [{[LIT_CHARS --ignore-whitespace]}], [{[LIT_CHARS --committer-date-is-author-date]}, {[LIT_CHARS --ignore-date]}], [{[LIT_CHARS -C] [LIT_OTHER "*"]}], [{[LIT_CHARS --root]}], [{[LIT_CHARS --force-rebase]}, {[LIT_CHARS --no-ff]}], [{[LIT_CHARS --rerere-autoupdate]}, {[LIT_CHARS --no-rerere-autoupdate]}], [{[LIT_CHARS --gpg-sign]}], [{[LIT_CHARS --gpg-sign] [LIT_OTHER "="] [LIT_OTHER "*"]}], [{[LIT_CHARS --]}]] (= scope= flags=0 words=[] bindings=[('ok_to_skip_pre_rebase', {[LIT_CHARS yes]})]) (= scope= flags=0 words=[] bindings=[('ok_to_skip_pre_rebase', {[SQ ]})]) (List (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[VarSub total_argc]} {[LIT_CHARS -eq]} {[LIT_CHARS 2]}) (Com {[LIT_CHARS usage]}) ) (= scope= flags=0 words=[] bindings=[('action', {[VarSub 1 transform_ops=[VS_UNARY_DPOUND {[LIT_CHARS --]}]]})]) ) (= scope= flags=0 words=[] bindings=[('onto', {[DQ [VarSub 1 transform_ops=[VS_UNARY_POUND {[LIT_CHARS "--onto="]}]]]})]) (List (= scope= flags=0 words=[] bindings=[('cmd', {[DQ [VarSub cmd][LIT_CHARS "exec "][VarSub 1 transform_ops=[VS_UNARY_POUND {[LIT_CHARS "--exec="]}]][VarSub LF]]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub interactive_rebase]]}) (= scope= flags=0 words=[] bindings=[('interactive_rebase', {[LIT_CHARS implied]})]) ) ) (= scope= flags=0 words=[] bindings=[('interactive_rebase', {[LIT_CHARS explicit]})]) (= scope= flags=0 words=[] bindings=[('keep_empty', {[LIT_CHARS yes]})]) (List (= scope= flags=0 words=[] bindings=[('preserve_merges', {[LIT_CHARS t]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub interactive_rebase]]}) (= scope= flags=0 words=[] bindings=[('interactive_rebase', {[LIT_CHARS implied]})]) ) ) (= scope= flags=0 words=[] bindings=[('autosquash', {[LIT_CHARS t]})]) (= scope= flags=0 words=[] bindings=[('autosquash', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('fork_point', {[LIT_CHARS t]})]) (= scope= flags=0 words=[] bindings=[('fork_point', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('do_merge', {[LIT_CHARS t]})]) (List (= scope= flags=0 words=[] bindings=[('strategy_opts', {[DQ [VarSub strategy_opts][LIT_CHARS " "][ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --sq-quote]} {[DQ [LIT_CHARS --][VarSub 1 transform_ops=[VS_UNARY_POUND {[LIT_CHARS "--strategy-option="]}]]]})]]})]) (= scope= flags=0 words=[] bindings=[('do_merge', {[LIT_CHARS t]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub strategy]]}) (= scope= flags=0 words=[] bindings=[('strategy', {[LIT_CHARS recursive]})]) ) ) (List (= scope= flags=0 words=[] bindings=[('strategy', {[DQ [VarSub 1 transform_ops=[VS_UNARY_POUND {[LIT_CHARS "--strategy="]}]]]})]) (= scope= flags=0 words=[] bindings=[('do_merge', {[LIT_CHARS t]})]) ) (= scope= flags=0 words=[] bindings=[('diffstat', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('diffstat', {[LIT_CHARS t]})]) (= scope= flags=0 words=[] bindings=[('autostash', {[LIT_CHARS true]})]) (= scope= flags=0 words=[] bindings=[('autostash', {[LIT_CHARS false]})]) (List (= scope= flags=0 words=[] bindings=[('verbose', {[LIT_CHARS t]})]) (= scope= flags=0 words=[] bindings=[('diffstat', {[LIT_CHARS t]})]) (= scope= flags=0 words=[] bindings=[('GIT_QUIET', {[SQ ]})]) ) (List (= scope= flags=0 words=[] bindings=[('GIT_QUIET', {[LIT_CHARS t]})]) (= scope= flags=0 words=[] bindings=[('git_am_opt', {[DQ [VarSub git_am_opt][LIT_CHARS " -q"]]})]) (= scope= flags=0 words=[] bindings=[('verbose', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('diffstat', {[SQ ]})]) ) (List (= scope= flags=0 words=[] bindings=[('git_am_opt', {[DQ [VarSub git_am_opt][LIT_CHARS " --whitespace="][VarSub 1 transform_ops=[VS_UNARY_POUND {[LIT_CHARS "--whitespace="]}]]]})]) (Case to_match={[DQ [VarSub 1 transform_ops=[VS_UNARY_POUND {[LIT_CHARS "--whitespace="]}]]]}, pat_word_list=[[{[LIT_CHARS fix]}, {[LIT_CHARS strip]}]] (= scope= flags=0 words=[] bindings=[('force_rebase', {[LIT_CHARS t]})]) ) ) (= scope= flags=0 words=[] bindings=[('git_am_opt', {[DQ [VarSub git_am_opt][LIT_CHARS " "][VarSub 1]]})]) (List (= scope= flags=0 words=[] bindings=[('git_am_opt', {[DQ [VarSub git_am_opt][LIT_CHARS " "][VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('force_rebase', {[LIT_CHARS t]})]) ) (= scope= flags=0 words=[] bindings=[('git_am_opt', {[DQ [VarSub git_am_opt][LIT_CHARS " "][VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('rebase_root', {[LIT_CHARS t]})]) (= scope= flags=0 words=[] bindings=[('force_rebase', {[LIT_CHARS t]})]) (= scope= flags=0 words=[] bindings=[('allow_rerere_autoupdate', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('gpg_sign_opt', {[LIT_CHARS -S]})]) (= scope= flags=0 words=[] bindings=[('gpg_sign_opt', {[DQ [LIT_CHARS -S][VarSub 1 transform_ops=[VS_UNARY_POUND {[LIT_CHARS "--gpg-sign="]}]]]})]) (List (Com {[LIT_CHARS shift]}) (Com {[LIT_CHARS break]}) ) ) (Com {[LIT_CHARS shift]}) ) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[VarSub #]} {[LIT_CHARS -gt]} {[LIT_CHARS 2]}) (Com {[LIT_CHARS usage]}) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub action]]}) (List (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub in_progress]]}) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "No rebase in progress?"]]})]]}) ) (If (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[DQ [VarSub type]]} {[LIT_OTHER "="]} {[LIT_CHARS interactive]}) (Com {[LIT_CHARS test]} {[DQ [VarSub GIT_REFLOG_ACTION]]} {[LIT_OTHER "="]} {[LIT_CHARS rebase]}) ) (List (= scope= flags=0 words=[] bindings=[('GIT_REFLOG_ACTION', {[DQ [LIT_CHARS "rebase -i ("][VarSub action][LIT_CHARS ")"]]})]) (= scope= flags=1 words=[{[LIT_CHARS GIT_REFLOG_ACTION]}] bindings=[]) ) ) ) ) (If (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[DQ [VarSub action]]} {[LIT_OTHER "="]} {[DQ [LIT_CHARS edit-todo]]}) (Com {[LIT_CHARS test]} {[DQ [VarSub type]]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[DQ [LIT_CHARS interactive]]}) ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "The --edit-todo action can only be used during interactive rebase."]]})]]}) ) (Case to_match={[DQ [VarSub action]]}, pat_word_list=[[{[LIT_CHARS continue]}], [{[LIT_CHARS skip]}], [{[LIT_CHARS abort]}], [{[LIT_CHARS edit-todo]}]] (List (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --verify]} {[LIT_CHARS HEAD]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "Cannot read HEAD"]]})]]}) ) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS update-index]} {[LIT_CHARS --ignore-submodules]} {[LIT_CHARS --refresh]}) (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS diff-files]} {[LIT_CHARS --quiet]} {[LIT_CHARS --ignore-submodules]}) (List (Com {[LIT_CHARS echo]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "You must edit all merge conflicts and then\n"][LIT_CHARS "mark them as resolved using git add"]]})]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) ) (Com {[LIT_CHARS read_basic_state]}) (Com {[LIT_CHARS run_specific_rebase]}) ) (List (AndOr OP_OR_IF (Com {[LIT_CHARS output]} {[LIT_CHARS git]} {[LIT_CHARS reset]} {[LIT_CHARS --hard]} {[LIT_CHARS HEAD]}) (Com {[LIT_CHARS exit]} {[VarSub ?]}) ) (Com {[LIT_CHARS read_basic_state]}) (Com {[LIT_CHARS run_specific_rebase]}) ) (List (Com {[LIT_CHARS git]} {[LIT_CHARS rerere]} {[LIT_CHARS clear]}) (Com {[LIT_CHARS read_basic_state]}) (Case to_match={[DQ [VarSub head_name]]}, pat_word_list=[[{[LIT_CHARS refs/] [LIT_OTHER "*"]}]] (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS symbolic-ref]} {[LIT_CHARS -m]} {[DQ [LIT_CHARS "rebase: aborting"]]} {[LIT_CHARS HEAD]} {[VarSub head_name]}) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Could not move back to "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS head_name]]})]]}) ) ) (Com {[LIT_CHARS output]} {[LIT_CHARS git]} {[LIT_CHARS reset]} {[LIT_CHARS --hard]} {[VarSub orig_head]}) (Com {[LIT_CHARS finish_rebase]}) (Com {[LIT_CHARS exit]}) ) (Com {[LIT_CHARS run_specific_rebase]}) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub in_progress]]}) (List (= scope= flags=0 words=[] bindings=[('state_dir_base', {[VarSub state_dir transform_ops=[VS_UNARY_DPOUND {[LIT_CHARS "*"] [LIT_SLASH /]}]]})]) (= scope= flags=0 words=[] bindings=[('cmd_live_rebase', {[DQ [LIT_CHARS "git rebase (--continue | --abort | --skip)"]]})]) (= scope= flags=0 words=[] bindings=[('cmd_clear_stale_rebase', {[DQ [LIT_CHARS "rm -fr "][\ LIT_ESCAPED_CHAR "\\\""][VarSub state_dir][\ LIT_ESCAPED_CHAR "\\\""]]})]) (Com {[LIT_CHARS die]} {[DQ [LIT_CHARS "\n"][ComSub (Com {[LIT_CHARS eval_gettext]} {[SQ ]})]]}) ) ) (If (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub rebase_root]]}) (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub onto]]}) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub interactive_rebase]]}) (= scope= flags=0 words=[] bindings=[('interactive_rebase', {[LIT_CHARS implied]})]) ) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub interactive_rebase]]}) (List (= scope= flags=0 words=[] bindings=[('type', {[LIT_CHARS interactive]})]) (= scope= flags=0 words=[] bindings=[('state_dir', {[DQ [VarSub merge_dir]]})]) ) (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub do_merge]]}) (List (= scope= flags=0 words=[] bindings=[('type', {[LIT_CHARS merge]})]) (= scope= flags=0 words=[] bindings=[('state_dir', {[DQ [VarSub merge_dir]]})]) ) (ElseTrue) (List (= scope= flags=0 words=[] bindings=[('type', {[LIT_CHARS am]})]) (= scope= flags=0 words=[] bindings=[('state_dir', {[DQ [VarSub apply_dir]]})]) ) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub rebase_root]]}) (List (Case to_match={[DQ [VarSub #]]}, pat_word_list=[[{[LIT_CHARS 0]}], [{[LIT_OTHER "*"]}]] (List (If (Pipeline! (= scope= flags=0 words=[] bindings=[('upstream_name', {[ComSub (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --symbolic-full-name]} {[LIT_CHARS --verify]} {[LIT_CHARS -q]} {[LIT_OTHER "@"] [LIT_LBRACE "{"] [LIT_CHARS upstream] [LIT_RBRACE "}"]})]})]) ) (List (Com {[LIT_CHARS .]} {[LIT_CHARS git-parse-remote]}) (Com {[LIT_CHARS error_on_missing_default_upstream]} {[DQ [LIT_CHARS rebase]]} {[DQ [LIT_CHARS rebase]]} {[DQ [LIT_CHARS against]]} {[DQ [LIT_CHARS "git rebase "][ComSub (Com {[LIT_CHARS gettext]} {[SQ ">]})]]}) ) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[DQ [VarSub fork_point]]} {[LIT_OTHER "="]} {[LIT_CHARS auto]}) (= scope= flags=0 words=[] bindings=[('fork_point', {[LIT_CHARS t]})]) ) ) (List (= scope= flags=0 words=[] bindings=[('upstream_name', {[DQ [VarSub 1]]})]) (If (Com {[LIT_CHARS test]} {[DQ [VarSub upstream_name]]} {[LIT_OTHER "="]} {[DQ [LIT_CHARS -]]}) (= scope= flags=0 words=[] bindings=[('upstream_name', {[DQ [LIT_CHARS "@{-1}"]]})]) ) (Com {[LIT_CHARS shift]}) ) ) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('upstream', {[ComSub (Com {[LIT_CHARS peel_committish]} {[DQ [VarSub upstream_name]]})]})]) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "invalid upstream "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS upstream_name]]})]]}) ) (= scope= flags=0 words=[] bindings=[('upstream_arg', {[DQ [VarSub upstream_name]]})]) ) (ElseTrue) (List (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub onto]]}) (List (= scope= flags=0 words=[] bindings=[('empty_tree', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS hash-object]} {[LIT_CHARS -t]} {[LIT_CHARS tree]} {[LIT_CHARS /dev/null]})]})]) (= scope= flags=0 words=[] bindings=[('onto', {[ComSub (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} 0)]{[LIT_CHARS git]} {[LIT_CHARS commit-tree]} {[VarSub empty_tree]})]})]) (= scope= flags=0 words=[] bindings=[('squash_onto', {[DQ [VarSub onto]]})]) ) ) (Com {[LIT_CHARS unset]} {[LIT_CHARS upstream_name]}) (Com {[LIT_CHARS unset]} {[LIT_CHARS upstream]}) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[VarSub #]} {[LIT_CHARS -gt]} {[LIT_CHARS 1]}) (Com {[LIT_CHARS usage]}) ) (= scope= flags=0 words=[] bindings=[('upstream_arg', {[LIT_CHARS --root]})]) ) ) (= scope= flags=0 words=[] bindings=[('onto_name', {[VarSub onto test_op=VS_TEST_HYPHEN {[DQ [VarSub upstream_name]]}]})]) (Case to_match={[DQ [VarSub onto_name]]}, pat_word_list=[[{[LIT_OTHER "*"] [LIT_CHARS ...] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (If (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('left', {[VarSub onto_name transform_ops=[VS_UNARY_PERCENT {[LIT_CHARS "...*"]}]]}), ('right', {[VarSub onto_name transform_ops=[VS_UNARY_POUND {[LIT_CHARS "*..."]}]]})]) (= scope= flags=0 words=[] bindings=[('onto', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS merge-base]} {[LIT_CHARS --all]} {[VarSub left test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS HEAD]}]} {[VarSub right test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS HEAD]}]})]})]) ) (Case to_match={[DQ [VarSub onto]]}, pat_word_list=[[{[LIT_OTHER "?"] [LIT_OTHER "*"] [DQ [VarSub LF]] [LIT_OTHER "?"] [LIT_OTHER "*"]}], [{[SQ ]}]] (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "onto_name: there are more than one merge bases"]]})]]}) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "onto_name: there is no merge base"]]})]]}) ) (ElseTrue) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "onto_name: there is no merge base"]]})]]}) ) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('onto', {[ComSub (Com {[LIT_CHARS peel_committish]} {[DQ [VarSub onto_name]]})]})]) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Does not point to a valid commit: "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS onto_name]]})]]}) ) ) (= scope= flags=0 words=[] bindings=[('switch_to', {[SQ ]})]) (Case to_match={[DQ [VarSub #]]}, pat_word_list=[[{[LIT_CHARS 1]}], [{[LIT_CHARS 0]}], [{[LIT_OTHER "*"]}]] (List (= scope= flags=0 words=[] bindings=[('branch_name', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('switch_to', {[DQ [VarSub 1]]})]) (If (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS show-ref]} {[LIT_CHARS --verify]} {[LIT_CHARS --quiet]} {[LIT_CHARS --]} {[DQ [LIT_CHARS refs/heads/][VarSub 1]]}) (= scope= flags=0 words=[] bindings=[('orig_head', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS -q]} {[LIT_CHARS --verify]} {[DQ [LIT_CHARS refs/heads/][VarSub 1]]})]})]) ) (= scope= flags=0 words=[] bindings=[('head_name', {[DQ [LIT_CHARS refs/heads/][VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('orig_head', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS -q]} {[LIT_CHARS --verify]} {[DQ [VarSub 1]]})]})]) (= scope= flags=0 words=[] bindings=[('head_name', {[DQ [LIT_CHARS "detached HEAD"]]})]) (ElseTrue) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "fatal: no such branch: "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS branch_name]]})]]}) ) ) (List (If (= scope= flags=0 words=[] bindings=[('branch_name', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS symbolic-ref]} {[LIT_CHARS -q]} {[LIT_CHARS HEAD]})]})]) (List (= scope= flags=0 words=[] bindings=[('head_name', {[VarSub branch_name]})]) (= scope= flags=0 words=[] bindings=[('branch_name', {[ComSub (Com {[LIT_CHARS expr]} {[DQ [LIT_CHARS z][VarSub branch_name]]} {[LIT_OTHER ":"]} {[SQ ]})]})]) ) (ElseTrue) (List (= scope= flags=0 words=[] bindings=[('head_name', {[DQ [LIT_CHARS "detached HEAD"]]})]) (= scope= flags=0 words=[] bindings=[('branch_name', {[LIT_CHARS HEAD]})]) ) ) (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 exit]}) ) ) (Com {[LIT_CHARS die]} {[DQ [LIT_CHARS "BUG: unexpected number of arguments left to parse"]]}) ) (If (Com {[LIT_CHARS test]} {[DQ [VarSub fork_point]]} {[LIT_OTHER "="]} {[LIT_CHARS t]}) (List (= scope= flags=0 words=[] bindings=[('new_upstream', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS merge-base]} {[LIT_CHARS --fork-point]} {[DQ [VarSub upstream_name]]} {[DQ [VarSub switch_to test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS HEAD]}]]})]})]) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub new_upstream]]}) (= scope= flags=0 words=[] bindings=[('restrict_revision', {[VarSub new_upstream]})]) ) ) ) (If (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[DQ [VarSub autostash]]} {[LIT_OTHER "="]} {[LIT_CHARS true]}) (Pipeline! (Subshell (Com {[LIT_CHARS require_clean_work_tree]}) ) ) ) (List (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('stash_sha1', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS stash]} {[LIT_CHARS create]} {[DQ [LIT_CHARS autostash]]})]})]) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[SQ ]})]]}) ) (AndOr OP_AND_IF (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub state_dir]]}) (AndOr OP_AND_IF (Com {[LIT_CHARS echo]} {[VarSub stash_sha1]} < (FilenameRedirectNode filename={[DQ [VarSub state_dir][LIT_CHARS /autostash]]} "> 1), > ) (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('stash_abbrev', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --short]} {[VarSub stash_sha1]})]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS echo]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[SQ ]})]]}) (Com {[LIT_CHARS git]} {[LIT_CHARS reset]} {[LIT_CHARS --hard]}) ) ) ) ) ) ) (Com {[LIT_CHARS require_clean_work_tree]} {[DQ [LIT_CHARS rebase]]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "Please commit or stash them."]]})]]}) (= scope= flags=0 words=[] bindings=[('mb', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS merge-base]} {[DQ [VarSub onto]]} {[DQ [VarSub orig_head]]})]})]) (If (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[DQ [VarSub type]]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[LIT_CHARS interactive]}) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[DQ [VarSub upstream]]} {[LIT_OTHER "="]} {[DQ [VarSub onto]]}) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[DQ [VarSub mb]]} {[LIT_OTHER "="]} {[DQ [VarSub onto]]}) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub restrict_revision]]}) (Pipeline! (Subshell (Pipeline (Com {[LIT_CHARS git]} {[LIT_CHARS rev-list]} {[LIT_CHARS --parents]} {[DQ [VarSub onto]] [LIT_CHARS ..] [DQ [VarSub orig_head]]}) (Com {[LIT_CHARS sane_grep]} {[DQ [LIT_CHARS " .* "]]}) ) ) ) ) ) ) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub force_rebase]]}) (List (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub switch_to]]}) (Com {[LIT_CHARS git]} {[LIT_CHARS checkout]} {[LIT_CHARS -q]} {[DQ [VarSub switch_to]]} {[LIT_CHARS --]} more_env=[('GIT_REFLOG_ACTION', {[DQ [VarSub GIT_REFLOG_ACTION][LIT_CHARS ": checkout "][VarSub switch_to]]})] ) ) (Com {[LIT_CHARS say]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Current branch "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "branch_name is up to date."]]})]]}) (Com {[LIT_CHARS finish_rebase]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 0]}) ) (ElseTrue) (Com {[LIT_CHARS say]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Current branch "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "branch_name is up to date, rebase forced."]]})]]}) ) ) (Com {[LIT_CHARS run_pre_rebase_hook]} {[DQ [VarSub upstream_arg]]} {[DQ [VarSub @]]}) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub diffstat]]}) (List (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub verbose]]}) (Com {[LIT_CHARS echo]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Changes from "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "mb to "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "onto:"]]})]]}) ) (Com {[LIT_CHARS git]} {[LIT_CHARS diff]} {[LIT_CHARS --stat]} {[LIT_CHARS --summary]} {[DQ [VarSub mb]]} {[DQ [VarSub onto]]} more_env=[('GIT_PAGER', {[SQ ]})] ) ) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[DQ [VarSub type]]} {[LIT_OTHER "="]} {[LIT_CHARS interactive]}) (Com {[LIT_CHARS run_specific_rebase]}) ) (Com {[LIT_CHARS say]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "First, rewinding head to replay your work on top of it..."]]})]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS checkout]} {[LIT_CHARS -q]} {[DQ [VarSub onto][LIT_CHARS "^0"]]} more_env=[('GIT_REFLOG_ACTION', {[DQ [VarSub GIT_REFLOG_ACTION][LIT_CHARS ": checkout "][VarSub onto_name]]})] ) (Com {[LIT_CHARS die]} {[DQ [LIT_CHARS "could not detach HEAD"]]}) ) (Com {[LIT_CHARS git]} {[LIT_CHARS update-ref]} {[LIT_CHARS ORIG_HEAD]} {[VarSub orig_head]}) (If (Com {[LIT_CHARS test]} {[DQ [VarSub mb]]} {[LIT_OTHER "="]} {[DQ [VarSub orig_head]]}) (List (Com {[LIT_CHARS say]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Fast-forwarded "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "branch_name to "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS onto_name.]]})]]}) (Com {[LIT_CHARS move_to_original_branch]}) (Com {[LIT_CHARS finish_rebase]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 0]}) ) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub rebase_root]]}) (= scope= flags=0 words=[] bindings=[('revisions', {[DQ [VarSub onto][LIT_CHARS ..][VarSub orig_head]]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('revisions', {[DQ [VarSub restrict_revision test_op=VS_TEST_HYPHEN {[VarSub upstream]}][LIT_CHARS ..][VarSub orig_head]]})]) ) (Com {[LIT_CHARS run_specific_rebase]}) )