(command.CommandList children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:dashless) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(basename)} {(DQ ($ VSub_Number '$0'))}) (C {(sed)} {(-e)} {(SQ <'s/-/ /'>)}) ] negated: F ) ] ) left_token: <Left_CommandSub '$('> ) } ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:USAGE) op: Equal rhs: { (DQ ('list [<options>]\n') (' or: ') ($ VSub_DollarName '$dashless') (' show [<stash>]\n') (' or: ') ($ VSub_DollarName '$dashless') (' drop [-q|--quiet] [<stash>]\n') (' or: ') ($ VSub_DollarName '$dashless') (' ( pop | apply ) [--index] [-q|--quiet] [<stash>]\n') (' or: ') ($ VSub_DollarName '$dashless') (' branch <branchname> [<stash>]\n') (' or: ') ($ VSub_DollarName '$dashless') (' [save [--patch] [-k|--[no-]keep-index] [-q|--quiet]\n') ('\t\t [-u|--include-untracked] [-a|--all] [<message>]]\n') (' or: ') ($ VSub_DollarName '$dashless') (' clear') ) } ) ] ) (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:SUBDIRECTORY_OK) op:Equal rhs:{(Yes)})] ) (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:OPTIONS_SPEC) op:Equal rhs:(word.EmptyWord))] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:START_DIR) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children:[(C {(pwd)})]) left_token: <Left_CommandSub '$('> ) } ) ] ) (C {(.)} {(git-sh-setup)}) (C {(require_work_tree)}) (C {(cd_to_toplevel)}) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:TMP) op: Equal rhs: {(DQ ($ VSub_DollarName '$GIT_DIR') (/.git-stash.) ($ VSub_Dollar '$$'))} ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:TMPindex) op: Equal rhs: { (word_part.BracedVarSub token: <VSub_Name GIT_INDEX_FILE> suffix_op: (suffix_op.StringUnary op_id: VTest_Hyphen arg_word: { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(git)} {(rev-parse)} {(--git-path)} {(index)})] ) left_token: <Left_CommandSub '$('> ) ) } ) ) (.stash.) ($ VSub_Dollar '$$') } ) ] ) (C {(trap)} {(SQ <'rm -f "$TMP-"* "$TMPindex"'>)} {(0)}) (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:ref_stash) op:Equal rhs:{(refs/stash)})] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(git)} {(config)} {(--get-colorbool)} {(color.interactive)}) terminator: <Op_Semi ';'> ) ] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:help_color) op: Equal rhs: { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(git)} {(config)} {(--get-color)} {(color.interactive.help)} {(SQ <'red bold'>)} ) ] ) left_token: <Left_CommandSub '$('> ) ) } ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:reset_color) op: Equal rhs: { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(git)} {(config)} {(--get-color)} {(SQ )} {(reset)})] ) left_token: <Left_CommandSub '$('> ) ) } ) ] ) ] ) ] else_action: [ (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:help_color) op:Equal rhs:(word.EmptyWord))] ) (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:reset_color) op:Equal rhs:(word.EmptyWord))] ) ] ) (command.FuncDef name: no_changes body: (command.BraceGroup children: [ (command.AndOr ops: [Op_DAmp Op_DAmp] children: [ (C {(git)} {(diff-index)} {(--quiet)} {(--cached)} {(HEAD)} {(--ignore-submodules)} {(--)}) (C {(git)} {(diff-files)} {(--quiet)} {(--ignore-submodules)}) (command.Subshell command_list: (command.CommandList children: [ (command.AndOr ops: [Op_DPipe] children: [ (C {(test)} {(-z)} {(DQ ($ VSub_DollarName '$untracked'))}) (C {(test)} {(-z)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(untracked_files)})] ) left_token: <Left_CommandSub '$('> ) ) } ) ] ) ] ) ) ] ) ] ) ) (command.FuncDef name: untracked_files body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:excl_opt) op: Equal rhs: {(--exclude-standard)} ) ] ) (command.AndOr ops: [Op_DAmp] children: [ (C {(test)} {(DQ ($ VSub_DollarName '$untracked'))} {(Lit_Other '=')} {(DQ (all))}) (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:excl_opt) op:Equal rhs:(word.EmptyWord))] ) ] ) (C {(git)} {(ls-files)} {(-o)} {(-z)} {($ VSub_DollarName '$excl_opt')}) ] ) ) (command.FuncDef name: clear_stash body: (command.BraceGroup children: [ (command.If arms: [ (if_arm cond: [(C {(test)} {($ VSub_Pound '$#')} {(KW_Bang '!') (Lit_Other '=')} {(0)})] action: [ (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(gettext)} {(DQ ('git stash clear with parameters is unimplemented'))} ) ] ) left_token: <Left_CommandSub '$('> ) ) } ) ] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:current) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(git)} {(rev-parse)} {(--verify)} {(--quiet)} {($ VSub_DollarName '$ref_stash')} ) ] ) left_token: <Left_CommandSub '$('> ) } ) ] ) ] action: [ (C {(git)} {(update-ref)} {(-d)} {($ VSub_DollarName '$ref_stash')} {($ VSub_DollarName '$current')} ) ] ) ] ) ] ) ) (command.FuncDef name: create_stash body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:stash_msg) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:untracked) op: Equal rhs: {(DQ ($ VSub_Number '$2'))} ) ] ) (C {(git)} {(update-index)} {(-q)} {(--refresh)}) (command.If arms: [ (if_arm cond: [(C {(no_changes)})] action: [(command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)})] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:b_commit) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(git)} {(rev-parse)} {(--verify)} {(HEAD)})] ) left_token: <Left_CommandSub '$('> ) } ) ] ) ] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:head) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(git)} {(rev-list)} {(--oneline)} {(-n)} {(1)} {(HEAD)} {(--)}) ] ) left_token: <Left_CommandSub '$('> ) } ) ] ) ] ) ] else_action: [ (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(gettext)} {(DQ ('You do not have the initial commit yet'))})] ) left_token: <Left_CommandSub '$('> ) ) } ) ] ) (command.If arms: [ (if_arm cond: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:branch) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(git)} {(symbolic-ref)} {(-q)} {(HEAD)})] ) left_token: <Left_CommandSub '$('> ) } ) ] ) ] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:branch) op: Equal rhs: { (word_part.BracedVarSub token: <VSub_Name branch> suffix_op: (suffix_op.StringUnary op_id: VOp1_Pound arg_word: {(refs) (Lit_Slash /) (heads) (Lit_Slash /)} ) ) } ) ] ) ] ) ] else_action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:branch) op: Equal rhs: {(SQ <'(no branch)'>)} ) ] ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:msg) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(printf)} {(SQ <'%s: %s'>)} {(DQ ($ VSub_DollarName '$branch'))} {(DQ ($ VSub_DollarName '$head'))} ) ] ) left_token: <Left_CommandSub '$('> ) } ) ] ) (command.AndOr ops: [Op_DAmp Op_DPipe] children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:i_tree) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children:[(C {(git)} {(write-tree)})]) left_token: <Left_CommandSub '$('> ) } ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:i_commit) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(printf)} {(SQ <'index on %s\\n'>)} {(DQ ($ VSub_DollarName '$msg'))} ) (C {(git)} {(commit-tree)} {($ VSub_DollarName '$i_tree')} {(-p)} {($ VSub_DollarName '$b_commit')} ) ] negated: F ) ] ) left_token: <Left_CommandSub '$('> ) } ) ] ) (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(gettext)} {(DQ ('Cannot save the current index state'))})] ) left_token: <Left_CommandSub '$('> ) ) } ) ] ) (command.If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ VSub_DollarName '$untracked'))})] action: [ (command.AndOr ops: [Op_DPipe] children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:u_commit) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(untracked_files)}) (command.Subshell command_list: (command.CommandList children: [ (command.AndOr ops: [ Op_DAmp Op_DAmp Op_DAmp Op_DAmp Op_DAmp Op_DAmp ] children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name: GIT_INDEX_FILE ) op: Equal rhs: { (DQ ($ VSub_DollarName '$TMPindex') ) } ) ] ) (C {(export)} {(GIT_INDEX_FILE)}) (C {(rm)} {(-f)} {(DQ ($ VSub_DollarName '$TMPindex'))} ) (C {(git)} {(update-index)} {(-z)} {(--add)} {(--remove)} {(--stdin)} ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:u_tree) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(git)} {(write-tree)}) ] ) left_token: <Left_CommandSub '$('> ) } ) ] ) (command.Pipeline children: [ (C {(printf)} {(SQ <'untracked files on %s\\n'>)} {(DQ ($ VSub_DollarName '$msg'))} ) (C {(git)} {(commit-tree)} {($ VSub_DollarName '$u_tree')} ) ] negated: F ) (C {(rm)} {(-f)} {(DQ ($ VSub_DollarName '$TMPindex'))} ) ] ) ] ) ) ] negated: F ) ] ) left_token: <Left_CommandSub '$('> ) } ) ] ) (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(gettext)} {(DQ ('Cannot save the untracked files'))}) ] ) left_token: <Left_CommandSub '$('> ) ) } ) ] ) (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:untracked_commit_option) op: Equal rhs: {(DQ ('-p ') ($ VSub_DollarName '$u_commit'))} ) ] ) terminator: <Op_Semi ';'> ) ] ) ] else_action: [ (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:untracked_commit_option) op:Equal rhs:(word.EmptyWord))] ) ] ) (command.If arms: [ (if_arm cond: [(C {(test)} {(-z)} {(DQ ($ VSub_DollarName '$patch_mode'))})] action: [ (command.AndOr ops: [Op_DPipe] children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:w_tree) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (command.Subshell command_list: (command.CommandList children: [ (command.AndOr ops: [Op_DAmp Op_DAmp Op_DAmp Op_DAmp Op_DAmp Op_DAmp] children: [ (C {(git)} {(read-tree)} {(--index-output) (Lit_Other '=') (DQ ($ VSub_DollarName '$TMPindex')) } {(-m)} {($ VSub_DollarName '$i_tree')} ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name: GIT_INDEX_FILE ) op: Equal rhs: {(DQ ($ VSub_DollarName '$TMPindex'))} ) ] ) (C {(export)} {(GIT_INDEX_FILE)}) (command.SimpleCommand words: [ {(git)} {(diff)} {(--name-only)} {(-z)} {(HEAD)} {(--)} ] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: { (DQ ($ VSub_DollarName '$TMP') (-stagenames) ) } ) ] ) (command.SimpleCommand words: [ {(git)} {(update-index)} {(-z)} {(--add)} {(--remove)} {(--stdin)} ] redirects: [ (redir.Redir op: <Redir_Less '<'> fd: 16777215 arg_word: { (DQ ($ VSub_DollarName '$TMP') (-stagenames) ) } ) ] ) (C {(git)} {(write-tree)}) (C {(rm)} {(-f)} {(DQ ($ VSub_DollarName '$TMPindex'))} ) ] ) ] ) ) ] ) left_token: <Left_CommandSub '$('> ) } ) ] ) (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(gettext)} {(DQ ('Cannot save the current worktree state'))}) ] ) left_token: <Left_CommandSub '$('> ) ) } ) ] ) ] ) ] else_action: [ (command.AndOr ops: [Op_DAmp Op_DAmp Op_DAmp Op_DPipe] children: [ (C {(rm)} {(-f)} {(DQ ($ VSub_DollarName '$TMP') (-index))}) (command.SimpleCommand words: [{(git)} {(read-tree)} {(HEAD)}] more_env: [ (env_pair name: GIT_INDEX_FILE val: {(DQ ($ VSub_DollarName '$TMP') (-index))} ) ] ) (command.SimpleCommand words: [{(git)} {(add--interactive)} {(--patch) (Lit_Other '=') (stash)} {(--)}] more_env: [ (env_pair name: GIT_INDEX_FILE val: {(DQ ($ VSub_DollarName '$TMP') (-index))} ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:w_tree) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (command.SimpleCommand words: [{(git)} {(write-tree)}] more_env: [ (env_pair name: GIT_INDEX_FILE val: {(DQ ($ VSub_DollarName '$TMP') (-index))} ) ] ) ] ) left_token: <Left_CommandSub '$('> ) } ) ] ) (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(gettext)} {(DQ ('Cannot save the current worktree state'))}) ] ) left_token: <Left_CommandSub '$('> ) ) } ) ] ) (command.AndOr ops: [Op_DAmp Op_DPipe] children: [ (command.SimpleCommand words: [{(git)} {(diff-tree)} {(-p)} {(HEAD)} {($ VSub_DollarName '$w_tree')} {(--)}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_DollarName '$TMP') (-patch))} ) ] ) (C {(test)} {(-s)} {(DQ ($ VSub_DollarName '$TMP') (-patch))}) (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(gettext)} {(DQ ('No changes selected'))})] ) left_token: <Left_CommandSub '$('> ) ) } ) ] ) (command.AndOr ops: [Op_DPipe] children: [ (C {(rm)} {(-f)} {(DQ ($ VSub_DollarName '$TMP') (-index))}) (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(gettext)} {(DQ ("Cannot remove temporary index (can't happen)"))}) ] ) left_token: <Left_CommandSub '$('> ) ) } ) ] ) ] ) (command.If arms: [ (if_arm cond: [(C {(test)} {(-z)} {(DQ ($ VSub_DollarName '$stash_msg'))})] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:stash_msg) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(printf)} {(SQ <'WIP on %s'>)} {(DQ ($ VSub_DollarName '$msg'))} ) ] ) left_token: <Left_CommandSub '$('> ) } ) ] ) ] ) ] else_action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:stash_msg) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(printf)} {(SQ <'On %s: %s'>)} {(DQ ($ VSub_DollarName '$branch'))} {(DQ ($ VSub_DollarName '$stash_msg'))} ) ] ) left_token: <Left_CommandSub '$('> ) } ) ] ) ] ) (command.AndOr ops: [Op_DPipe] children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:w_commit) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(printf)} {(SQ <'%s\\n'>)} {(DQ ($ VSub_DollarName '$stash_msg'))} ) (C {(git)} {(commit-tree)} {($ VSub_DollarName '$w_tree')} {(-p)} {($ VSub_DollarName '$b_commit')} {(-p)} {($ VSub_DollarName '$i_commit')} {($ VSub_DollarName '$untracked_commit_option')} ) ] negated: F ) ] ) left_token: <Left_CommandSub '$('> ) } ) ] ) (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(gettext)} {(DQ ('Cannot record working tree state'))})] ) left_token: <Left_CommandSub '$('> ) ) } ) ] ) ] ) ) (command.FuncDef name: store_stash body: (command.BraceGroup children: [ (command.WhileUntil keyword: <KW_While while> cond: [(C {(test)} {($ VSub_Pound '$#')} {(KW_Bang '!') (Lit_Other '=')} {(0)})] body: (command.DoGroup children: [ (command.Case to_match: {(DQ ($ VSub_Number '$1'))} arms: [ (case_arm pat_list: [{(-m)} {(--message)}] action: [ (C {(shift)}) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:stash_msg) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} ) ] ) ] ) (case_arm pat_list: [{(-q)} {(--quiet)}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:quiet) op: Equal rhs: {(t)} ) ] ) ] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [(command.ControlFlow token:<ControlFlow_Break break>)] ) ] ) (C {(shift)}) ] ) ) (command.AndOr ops: [Op_DPipe] children: [ (C {(test)} {($ VSub_Pound '$#')} {(Lit_Other '=')} {(1)}) (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ($ VSub_DollarName '$dashless') (' store') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (' requires one <commit> argument') ) } ) ] ) left_token: <Left_CommandSub '$('> ) ) } ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:w_commit) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} ) ] ) (command.If arms: [ (if_arm cond: [(C {(test)} {(-z)} {(DQ ($ VSub_DollarName '$stash_msg'))})] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:stash_msg) op: Equal rhs: { (DQ ('Created via ') (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\"'> ) ('git stash store') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (.) ) } ) ] ) ] ) ] ) (C {(git)} {(update-ref)} {(--create-reflog)} {(-m)} {(DQ ($ VSub_DollarName '$stash_msg'))} {($ VSub_DollarName '$ref_stash')} {($ VSub_DollarName '$w_commit')} ) (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:ret) op:Equal rhs:{($ VSub_QMark '$?')})] ) (command.AndOr ops: [Op_DAmp Op_DAmp] children: [ (C {(test)} {($ VSub_DollarName '$ret')} {(KW_Bang '!') (Lit_Other '=')} {(0)}) (C {(test)} {(-z)} {(DQ ($ VSub_DollarName '$quiet'))}) (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ('Cannot update ') (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\$'> ) ('ref_stash with ') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) (w_commit) ) } ) ] ) left_token: <Left_CommandSub '$('> ) ) } ) ] ) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {($ VSub_DollarName '$ret')} ) ] ) ) (command.FuncDef name: save_stash body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:keep_index) op:Equal rhs:(word.EmptyWord))] ) (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:patch_mode) op:Equal rhs:(word.EmptyWord))] ) (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:untracked) op:Equal rhs:(word.EmptyWord))] ) (command.WhileUntil keyword: <KW_While while> cond: [(C {(test)} {($ VSub_Pound '$#')} {(KW_Bang '!') (Lit_Other '=')} {(0)})] body: (command.DoGroup children: [ (command.Case to_match: {(DQ ($ VSub_Number '$1'))} arms: [ (case_arm pat_list: [{(-k)} {(--keep-index)}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:keep_index) op: Equal rhs: {(t)} ) ] ) ] ) (case_arm pat_list: [{(--no-keep-index)}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:keep_index) op: Equal rhs: {(n)} ) ] ) ] ) (case_arm pat_list: [{(-p)} {(--patch)}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:patch_mode) op: Equal rhs: {(t)} ) ] ) (command.AndOr ops: [Op_DAmp] children: [ (C {(test)} {(-z)} {(DQ ($ VSub_DollarName '$keep_index'))}) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:keep_index) op: Equal rhs: {(t)} ) ] ) ] ) ] ) (case_arm pat_list: [{(-q)} {(--quiet)}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:GIT_QUIET) op: Equal rhs: {(t)} ) ] ) ] ) (case_arm pat_list: [{(-u)} {(--include-untracked)}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:untracked) op: Equal rhs: {(untracked)} ) ] ) ] ) (case_arm pat_list: [{(-a)} {(--all)}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:untracked) op: Equal rhs: {(all)} ) ] ) ] ) (case_arm pat_list: [{(--help)}] action: [(C {(show_help)})] ) (case_arm pat_list: [{(--)}] action: [(C {(shift)}) (command.ControlFlow token:<ControlFlow_Break break>)] ) (case_arm pat_list: [{(-) (Lit_Other '*')}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:option) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} ) ] ) (C {(eval_gettextln)} { (DQ ("error: unknown option for 'stash save': ") (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\$'> ) ('option\n') (" To provide a message, use git stash save -- '") (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\$'> ) ("option'") ) } ) (C {(usage)}) ] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [(command.ControlFlow token:<ControlFlow_Break break>)] ) ] ) (C {(shift)}) ] ) ) (command.If arms: [ (if_arm cond: [ (command.AndOr ops: [Op_DAmp] children: [ (C {(test)} {(-n)} {(DQ ($ VSub_DollarName '$patch_mode'))}) (C {(test)} {(-n)} {(DQ ($ VSub_DollarName '$untracked'))}) ] ) ] action: [ (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(gettext)} { (DQ ( "Can't use --patch and --include-untracked or --all at the same time" ) ) } ) ] ) left_token: <Left_CommandSub '$('> ) ) } ) ] ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:stash_msg) op: Equal rhs: {(DQ ($ VSub_Star '$*'))} ) ] ) (C {(git)} {(update-index)} {(-q)} {(--refresh)}) (command.If arms: [ (if_arm cond: [(C {(no_changes)})] action: [ (C {(say)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(gettext)} {(DQ ('No local changes to save'))})] ) left_token: <Left_CommandSub '$('> ) ) } ) (command.ControlFlow token: <ControlFlow_Exit exit> arg_word: {(0)} ) ] ) ] ) (command.AndOr ops: [Op_DPipe Op_DPipe] children: [ (C {(git)} {(reflog)} {(exists)} {($ VSub_DollarName '$ref_stash')}) (C {(clear_stash)}) (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(gettext)} {(DQ ('Cannot initialize stash'))})] ) left_token: <Left_CommandSub '$('> ) ) } ) ] ) (C {(create_stash)} {(DQ ($ VSub_DollarName '$stash_msg'))} {($ VSub_DollarName '$untracked')} ) (command.AndOr ops: [Op_DPipe] children: [ (C {(store_stash)} {(-m)} {(DQ ($ VSub_DollarName '$stash_msg'))} {(-q)} {($ VSub_DollarName '$w_commit')} ) (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(gettext)} {(DQ ('Cannot save the current status'))})] ) left_token: <Left_CommandSub '$('> ) ) } ) ] ) (C {(say)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ('Saved working directory and index state ') (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\$'> ) (stash_msg) ) } ) ] ) left_token: <Left_CommandSub '$('> ) ) } ) (command.If arms: [ (if_arm cond: [(C {(test)} {(-z)} {(DQ ($ VSub_DollarName '$patch_mode'))})] action: [ (C {(git)} {(reset)} {(--hard)} { (word_part.BracedVarSub token: <VSub_Name GIT_QUIET> suffix_op: (suffix_op.StringUnary op_id:VTest_ColonPlus arg_word:{(-q)}) ) } ) (command.AndOr ops: [Op_DAmp Op_DPipe] children: [ (C {(test)} {(DQ ($ VSub_DollarName '$untracked'))} {(Lit_Other '=')} {(DQ (all))}) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:CLEAN_X_OPTION) op: Equal rhs: {(-x)} ) ] ) (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:CLEAN_X_OPTION) op:Equal rhs:(word.EmptyWord))] ) ] ) (command.If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ VSub_DollarName '$untracked'))})] action: [ (C {(git)} {(clean)} {(--force)} {(--quiet)} {(-d)} {($ VSub_DollarName '$CLEAN_X_OPTION')} ) ] ) ] ) (command.If arms: [ (if_arm cond: [ (command.AndOr ops: [Op_DAmp] children: [ (C {(test)} {(DQ ($ VSub_DollarName '$keep_index'))} {(Lit_Other '=')} {(DQ (t))} ) (C {(test)} {(-n)} {(DQ ($ VSub_DollarName '$i_tree'))}) ] ) ] action: [ (C {(git)} {(read-tree)} {(--reset)} {(-u)} {($ VSub_DollarName '$i_tree')}) ] ) ] ) ] ) ] else_action: [ (command.AndOr ops: [Op_DPipe] children: [ (command.SimpleCommand words: [{(git)} {(apply)} {(-R)}] redirects: [ (redir.Redir op: <Redir_Less '<'> fd: 16777215 arg_word: {(DQ ($ VSub_DollarName '$TMP') (-patch))} ) ] ) (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(gettext)} {(DQ ('Cannot remove worktree changes'))})] ) left_token: <Left_CommandSub '$('> ) ) } ) ] ) (command.If arms: [ (if_arm cond: [ (C {(test)} {(DQ ($ VSub_DollarName '$keep_index'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ (t))} ) ] action: [(C {(git)} {(reset)})] ) ] ) ] ) ] ) ) (command.FuncDef name: have_stash body: (command.BraceGroup children: [ (command.SimpleCommand words: [{(git)} {(rev-parse)} {(--verify)} {(--quiet)} {($ VSub_DollarName '$ref_stash')}] redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(/dev/null)})] ) ] ) ) (command.FuncDef name: list_stash body: (command.BraceGroup children: [ (command.AndOr ops: [Op_DPipe] children: [ (C {(have_stash)}) (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] ) (C {(git)} {(log)} {(--format) (Lit_Other '=') (DQ ('%gd: %gs'))} {(-g)} {(--first-parent)} {(-m)} {(DQ ($ VSub_At '$@'))} {($ VSub_DollarName '$ref_stash')} {(--)} ) ] ) ) (command.FuncDef name: show_stash body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:ALLOW_UNKNOWN_FLAGS) op:Equal rhs:{(t)})] ) (C {(assert_stash_like)} {(DQ ($ VSub_At '$@'))}) (command.If arms: [ (if_arm cond: [(C {(test)} {(-z)} {(DQ ($ VSub_DollarName '$FLAGS'))})] action: [ (command.If arms: [ (if_arm cond: [ (C {(test)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (command.AndOr ops: [Op_DPipe] children: [ (C {(git)} {(config)} {(--bool)} {(stash.showStat)}) (C {(echo)} {(true)}) ] ) ] ) left_token: <Left_CommandSub '$('> ) ) } {(Lit_Other '=')} {(DQ (true))} ) ] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:FLAGS) op: Equal rhs: {(--stat)} ) ] ) ] ) ] ) (command.If arms: [ (if_arm cond: [ (C {(test)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (command.AndOr ops: [Op_DPipe] children: [ (C {(git)} {(config)} {(--bool)} {(stash.showPatch)}) (C {(echo)} {(false)}) ] ) ] ) left_token: <Left_CommandSub '$('> ) ) } {(Lit_Other '=')} {(DQ (true))} ) ] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:FLAGS) op: Equal rhs: {(${ VSub_Name FLAGS) (word_part.BracedVarSub token: <VSub_Name FLAGS> suffix_op: (suffix_op.StringUnary op_id: VTest_ColonPlus arg_word: {(' ')} ) ) (-p) } ) ] ) ] ) ] ) (command.If arms: [ (if_arm cond: [(C {(test)} {(-z)} {(DQ ($ VSub_DollarName '$FLAGS'))})] action: [ (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] ) ] ) ] ) ] ) (C {(git)} {(diff)} {(${ VSub_Name FLAGS)} {($ VSub_DollarName '$b_commit')} {($ VSub_DollarName '$w_commit')} ) ] ) ) (command.FuncDef name: show_help body: (command.BraceGroup children: [ (C {(exec)} {(git)} {(help)} {(stash)}) (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] ) ) (command.FuncDef name: parse_flags_and_rev body: (command.BraceGroup children: [ (command.AndOr ops: [Op_DAmp] children: [ (C {(test)} {(DQ ($ VSub_DollarName '$PARSE_CACHE'))} {(Lit_Other '=')} {(DQ ($ VSub_Star '$*'))} ) (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:PARSE_CACHE) op: Equal rhs: {(DQ ($ VSub_Star '$*'))} ) ] ) (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:IS_STASH_LIKE) op:Equal rhs:(word.EmptyWord))] ) (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:IS_STASH_REF) op:Equal rhs:(word.EmptyWord))] ) (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:INDEX_OPTION) op:Equal rhs:(word.EmptyWord))] ) (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:s) op:Equal rhs:(word.EmptyWord))] ) (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:w_commit) op:Equal rhs:(word.EmptyWord))] ) (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:b_commit) op:Equal rhs:(word.EmptyWord))] ) (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:i_commit) op:Equal rhs:(word.EmptyWord))] ) (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:u_commit) op:Equal rhs:(word.EmptyWord))] ) (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:w_tree) op:Equal rhs:(word.EmptyWord))] ) (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:b_tree) op:Equal rhs:(word.EmptyWord))] ) (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:i_tree) op:Equal rhs:(word.EmptyWord))] ) (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:u_tree) op:Equal rhs:(word.EmptyWord))] ) (command.AndOr ops: [Op_DPipe] children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:REV) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(git)} {(rev-parse)} {(--no-flags)} {(--symbolic)} {(--sq)} {(DQ ($ VSub_At '$@'))} ) ] ) left_token: <Left_CommandSub '$('> ) } ) ] ) (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] ) (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:FLAGS) op:Equal rhs:(word.EmptyWord))] ) (command.ForEach iter_name: opt do_arg_iter: T body: (command.DoGroup children: [ (command.Case to_match: {(DQ ($ VSub_DollarName '$opt'))} arms: [ (case_arm pat_list: [{(-q)} {(--quiet)}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:GIT_QUIET) op: Equal rhs: {(-t)} ) ] ) ] ) (case_arm pat_list: [{(--index)}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:INDEX_OPTION) op: Equal rhs: {(--index)} ) ] ) ] ) (case_arm pat_list: [{(--help)}] action: [(C {(show_help)})] ) (case_arm pat_list: [{(-) (Lit_Other '*')}] action: [ (command.AndOr ops: [Op_DPipe] children: [ (C {(test)} {(DQ ($ VSub_DollarName '$ALLOW_UNKNOWN_FLAGS'))} {(Lit_Other '=')} {(t)} ) (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ('unknown option: ') (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\$'> ) (opt) ) } ) ] ) left_token: <Left_CommandSub '$('> ) ) } ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:FLAGS) op: Equal rhs: { (DQ (${ VSub_Name FLAGS) (word_part.BracedVarSub token: <VSub_Name FLAGS> suffix_op: (suffix_op.StringUnary op_id: VTest_ColonPlus arg_word: {(' ')} ) ) ($ VSub_DollarName '$opt') ) } ) ] ) ] ) ] ) ] ) ) (C {(eval)} {(set)} {(--)} {($ VSub_DollarName '$REV')}) (command.Case to_match: {($ VSub_Pound '$#')} arms: [ (case_arm pat_list: [{(0)}] action: [ (command.AndOr ops: [Op_DPipe] children: [ (C {(have_stash)}) (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(gettext)} {(DQ ('No stash found.'))})] ) left_token: <Left_CommandSub '$('> ) ) } ) ] ) (C {(set)} {(--)} {(${ VSub_Name ref_stash) (Lit_Other '@') (Lit_LBrace '{') (0) (Lit_RBrace '}')} ) ] ) (case_arm pat_list:[{(1)}] action:[(C {(Lit_Other ':')})]) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ('Too many revisions specified: ') (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\$'> ) (REV) ) } ) ] ) left_token: <Left_CommandSub '$('> ) ) } ) ] ) ] ) (command.AndOr ops: [Op_DPipe] children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:REV) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(git)} {(rev-parse)} {(--symbolic)} {(--verify)} {(--quiet)} {(DQ ($ VSub_Number '$1'))} ) ] ) left_token: <Left_CommandSub '$('> ) } ) ] ) (command.BraceGroup children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:reference) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} ) ] ) (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('reference is not a valid reference') ) } ) ] ) left_token: <Left_CommandSub '$('> ) ) } ) ] ) ] ) (command.AndOr ops: [Op_DAmp Op_DAmp Op_DAmp Op_DAmp Op_DAmp Op_DAmp Op_DAmp Op_DAmp Op_DAmp Op_DAmp] children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:i_commit) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(git)} {(rev-parse)} {(--verify)} {(--quiet)} {(DQ ($ VSub_DollarName '$REV') ('^2'))} ) ] ) left_token: <Left_CommandSub '$('> ) } ) ] ) (C {(set)} {(--)} { (word_part.CommandSubPart command_list: (command.CommandList children: [ (command.SimpleCommand words: [ {(git)} {(rev-parse)} {(DQ ($ VSub_DollarName '$REV'))} {(DQ ($ VSub_DollarName '$REV') ('^1'))} {(DQ ($ VSub_DollarName '$REV') (':'))} {(DQ ($ VSub_DollarName '$REV') ('^1:'))} {(DQ ($ VSub_DollarName '$REV') ('^2:'))} ] redirects: [ (redir.Redir op: <Redir_Great '2>'> fd: 2 arg_word: {(/dev/null)} ) ] ) ] ) left_token: <Left_CommandSub '$('> ) } ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:s) op: Equal rhs: {($ VSub_Number '$1')} ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:w_commit) op: Equal rhs: {($ VSub_Number '$1')} ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:b_commit) op: Equal rhs: {($ VSub_Number '$2')} ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:w_tree) op: Equal rhs: {($ VSub_Number '$3')} ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:b_tree) op: Equal rhs: {($ VSub_Number '$4')} ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:i_tree) op: Equal rhs: {($ VSub_Number '$5')} ) ] ) (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:IS_STASH_LIKE) op:Equal rhs:{(t)})] ) (C {(test)} {(DQ ($ VSub_DollarName '$ref_stash'))} {(Lit_Other '=')} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(git)} {(rev-parse)} {(--symbolic-full-name)} { (DQ (word_part.BracedVarSub token: <VSub_Name REV> suffix_op: (suffix_op.StringUnary op_id: VOp1_Percent arg_word: {('@*')} ) ) ) } ) ] ) left_token: <Left_CommandSub '$('> ) ) } ) (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:IS_STASH_REF) op:Equal rhs:{(t)})] ) ] ) (command.AndOr ops: [Op_DAmp] children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:u_commit) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(git)} {(rev-parse)} {(--verify)} {(--quiet)} {(DQ ($ VSub_DollarName '$REV') ('^3'))} ) ] ) left_token: <Left_CommandSub '$('> ) } ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:u_tree) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (command.SimpleCommand words: [ {(git)} {(rev-parse)} {(DQ ($ VSub_DollarName '$REV') ('^3:'))} ] redirects: [ (redir.Redir op: <Redir_Great '2>'> fd: 2 arg_word: {(/dev/null)} ) ] ) ] ) left_token: <Left_CommandSub '$('> ) } ) ] ) ] ) ] ) ) (command.FuncDef name: is_stash_like body: (command.BraceGroup children: [ (C {(parse_flags_and_rev)} {(DQ ($ VSub_At '$@'))}) (C {(test)} {(-n)} {(DQ ($ VSub_DollarName '$IS_STASH_LIKE'))}) ] ) ) (command.FuncDef name: assert_stash_like body: (command.BraceGroup children: [ (command.AndOr ops: [Op_DPipe] children: [ (C {(is_stash_like)} {(DQ ($ VSub_At '$@'))}) (command.BraceGroup children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:args) op: Equal rhs: {(DQ ($ VSub_Star '$*'))} ) ] ) (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ("'") (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\$'> ) ("args' is not a stash-like commit") ) } ) ] ) left_token: <Left_CommandSub '$('> ) ) } ) ] ) ] ) ] ) ) (command.FuncDef name: is_stash_ref body: (command.BraceGroup children: [ (command.AndOr ops: [Op_DAmp] children: [ (C {(is_stash_like)} {(DQ ($ VSub_At '$@'))}) (C {(test)} {(-n)} {(DQ ($ VSub_DollarName '$IS_STASH_REF'))}) ] ) ] ) ) (command.FuncDef name: assert_stash_ref body: (command.BraceGroup children: [ (command.AndOr ops: [Op_DPipe] children: [ (C {(is_stash_ref)} {(DQ ($ VSub_At '$@'))}) (command.BraceGroup children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:args) op: Equal rhs: {(DQ ($ VSub_Star '$*'))} ) ] ) (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ("'") (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\$'> ) ("args' is not a stash reference") ) } ) ] ) left_token: <Left_CommandSub '$('> ) ) } ) ] ) ] ) ] ) ) (command.FuncDef name: apply_stash body: (command.BraceGroup children: [ (C {(assert_stash_like)} {(DQ ($ VSub_At '$@'))}) (command.AndOr ops: [Op_DPipe] children: [ (C {(git)} {(update-index)} {(-q)} {(--refresh)}) (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(gettext)} {(DQ ('unable to refresh index'))})] ) left_token: <Left_CommandSub '$('> ) ) } ) ] ) (command.AndOr ops: [Op_DPipe] children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:c_tree) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children:[(C {(git)} {(write-tree)})]) left_token: <Left_CommandSub '$('> ) } ) ] ) (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(gettext)} {(DQ ('Cannot apply a stash in the middle of a merge'))}) ] ) left_token: <Left_CommandSub '$('> ) ) } ) ] ) (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:unstashed_index_tree) op:Equal rhs:(word.EmptyWord))] ) (command.If arms: [ (if_arm cond: [ (command.AndOr ops: [Op_DAmp Op_DAmp] children: [ (C {(test)} {(-n)} {(DQ ($ VSub_DollarName '$INDEX_OPTION'))}) (C {(test)} {(DQ ($ VSub_DollarName '$b_tree'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ ($ VSub_DollarName '$i_tree'))} ) (C {(test)} {(DQ ($ VSub_DollarName '$c_tree'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ ($ VSub_DollarName '$i_tree'))} ) ] ) ] action: [ (command.Pipeline children: [ (C {(git)} {(diff-tree)} {(--binary)} {($ VSub_DollarName '$s') (Lit_Other '^') (2) (Lit_Other '^') (..) ($ VSub_DollarName '$s') (Lit_Other '^') (2) } ) (C {(git)} {(apply)} {(--cached)}) ] negated: F ) (command.AndOr ops: [Op_DAmp] children: [ (C {(test)} {($ VSub_QMark '$?')} {(-ne)} {(0)}) (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(gettext)} {(DQ ('Conflicts in index. Try without --index.'))}) ] ) left_token: <Left_CommandSub '$('> ) ) } ) ] ) (command.AndOr ops: [Op_DPipe] children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:unstashed_index_tree) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(git)} {(write-tree)})] ) left_token: <Left_CommandSub '$('> ) } ) ] ) (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(gettext)} {(DQ ('Could not save index tree'))})] ) left_token: <Left_CommandSub '$('> ) ) } ) ] ) (C {(git)} {(reset)}) ] ) ] ) (command.If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ VSub_DollarName '$u_tree'))})] action: [ (command.AndOr ops: [Op_DAmp Op_DAmp Op_DPipe] children: [ (command.SimpleCommand words: [{(git-read-tree)} {(DQ ($ VSub_DollarName '$u_tree'))}] more_env: [ (env_pair name: GIT_INDEX_FILE val: {(DQ ($ VSub_DollarName '$TMPindex'))} ) ] ) (command.SimpleCommand words: [{(git)} {(checkout-index)} {(--all)}] more_env: [ (env_pair name: GIT_INDEX_FILE val: {(DQ ($ VSub_DollarName '$TMPindex'))} ) ] ) (C {(rm)} {(-f)} {(DQ ($ VSub_DollarName '$TMPindex'))}) (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(gettext)} {(DQ ('Could not restore untracked files from stash'))} ) ] ) left_token: <Left_CommandSub '$('> ) ) } ) ] ) ] ) ] ) (C {(eval)} { (DQ ('\n') ('\t\tGITHEAD_') ($ VSub_DollarName '$w_tree') ("='Stashed changes' &&\n") ('\t\tGITHEAD_') ($ VSub_DollarName '$c_tree') ("='Updated upstream' &&\n") ('\t\tGITHEAD_') ($ VSub_DollarName '$b_tree') ("='Version stash was based on' &&\n") ('\t\texport GITHEAD_') ($ VSub_DollarName '$w_tree') (' GITHEAD_') ($ VSub_DollarName '$c_tree') (' GITHEAD_') ($ VSub_DollarName '$b_tree') ('\n') ('\t') ) } ) (command.If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ VSub_DollarName '$GIT_QUIET'))})] action: [ (command.AndOr ops: [Op_DAmp] children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:GIT_MERGE_VERBOSITY) op: Equal rhs: {(0)} ) ] ) (C {(export)} {(GIT_MERGE_VERBOSITY)}) ] ) ] ) ] ) (command.If arms: [ (if_arm cond: [ (C {(git)} {(merge-recursive)} {($ VSub_DollarName '$b_tree')} {(--)} {($ VSub_DollarName '$c_tree')} {($ VSub_DollarName '$w_tree')} ) ] action: [ (command.If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ VSub_DollarName '$unstashed_index_tree'))})] action: [ (C {(git)} {(read-tree)} {(DQ ($ VSub_DollarName '$unstashed_index_tree'))}) ] ) ] else_action: [ (command.AndOr ops: [Op_DAmp Op_DAmp Op_DAmp Op_DPipe] children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:a) op: Equal rhs: {(DQ ($ VSub_DollarName '$TMP') (-added))} ) ] ) (command.SimpleCommand words: [ {(git)} {(diff-index)} {(--cached)} {(--name-only)} {(--diff-filter) (Lit_Other '=') (A)} {($ VSub_DollarName '$c_tree')} ] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_DollarName '$a'))} ) ] ) (C {(git)} {(read-tree)} {(--reset)} {($ VSub_DollarName '$c_tree')}) (command.SimpleCommand words: [{(git)} {(update-index)} {(--add)} {(--stdin)}] redirects: [ (redir.Redir op: <Redir_Less '<'> fd: 16777215 arg_word: {(DQ ($ VSub_DollarName '$a'))} ) ] ) (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(gettext)} {(DQ ('Cannot unstage modified files'))}) ] ) left_token: <Left_CommandSub '$('> ) ) } ) ] ) (C {(rm)} {(-f)} {(DQ ($ VSub_DollarName '$a'))}) ] ) (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:squelch) op:Equal rhs:(word.EmptyWord))] ) (command.If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ VSub_DollarName '$GIT_QUIET'))})] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:squelch) op: Equal rhs: {(SQ <'>/dev/null 2>&1'>)} ) ] ) ] ) ] ) (command.AndOr ops: [Op_DPipe] children: [ (command.Subshell command_list: (command.CommandList children: [ (command.AndOr ops: [Op_DAmp] children: [ (C {(cd)} {(DQ ($ VSub_DollarName '$START_DIR'))}) (C {(eval)} {(DQ ('git status ') ($ VSub_DollarName '$squelch'))}) ] ) ] ) ) (C {(Lit_Other ':')}) ] ) ] ) ] else_action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:status) op: Equal rhs: {($ VSub_QMark '$?')} ) ] ) (C {(git)} {(rerere)}) (command.If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ VSub_DollarName '$INDEX_OPTION'))})] action: [ (command.SimpleCommand words: [{(gettextln)} {(DQ ('Index was not unstashed.'))}] redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) ] ) ] ) (command.ControlFlow token: <ControlFlow_Exit exit> arg_word: {($ VSub_DollarName '$status')} ) ] ) ] ) ) (command.FuncDef name: pop_stash body: (command.BraceGroup children: [ (C {(assert_stash_ref)} {(DQ ($ VSub_At '$@'))}) (command.If arms: [ (if_arm cond: [(C {(apply_stash)} {(DQ ($ VSub_At '$@'))})] action: [(C {(drop_stash)} {(DQ ($ VSub_At '$@'))})] ) ] else_action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:status) op: Equal rhs: {($ VSub_QMark '$?')} ) ] ) (C {(say)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(gettext)} {(DQ ('The stash is kept in case you need it again.'))}) ] ) left_token: <Left_CommandSub '$('> ) ) } ) (command.ControlFlow token: <ControlFlow_Exit exit> arg_word: {($ VSub_DollarName '$status')} ) ] ) ] ) ) (command.FuncDef name: drop_stash body: (command.BraceGroup children: [ (C {(assert_stash_ref)} {(DQ ($ VSub_At '$@'))}) (command.AndOr ops: [Op_DAmp Op_DPipe] children: [ (C {(git)} {(reflog)} {(delete)} {(--updateref)} {(--rewrite)} {(DQ (${ VSub_Name REV))}) (C {(say)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ ('Dropped ') (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\$'> ) ('{REV} (') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('s)') ) } ) ] ) left_token: <Left_CommandSub '$('> ) ) } ) (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(eval_gettext)} { (DQ (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('{REV}: Could not drop stash entry') ) } ) ] ) left_token: <Left_CommandSub '$('> ) ) } ) ] ) (command.AndOr ops: [Op_DPipe] children: [ (command.SimpleCommand words: [ {(git)} {(rev-parse)} {(--verify)} {(--quiet)} {(DQ ($ VSub_DollarName '$ref_stash') ('@{0}'))} ] redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(/dev/null)})] ) (C {(clear_stash)}) ] ) ] ) ) (command.FuncDef name: apply_to_branch body: (command.BraceGroup children: [ (command.AndOr ops: [Op_DPipe] children: [ (C {(test)} {(-n)} {(DQ ($ VSub_Number '$1'))}) (C {(die)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(gettext)} {(DQ ('No branch name specified'))})] ) left_token: <Left_CommandSub '$('> ) ) } ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:branch) op: Equal rhs: {($ VSub_Number '$1')} ) ] ) (C {(shift)} {(1)}) (C {(set)} {(--)} {(--index)} {(DQ ($ VSub_At '$@'))}) (C {(assert_stash_like)} {(DQ ($ VSub_At '$@'))}) (command.AndOr ops: [Op_DAmp Op_DAmp] children: [ (C {(git)} {(checkout)} {(-b)} {($ VSub_DollarName '$branch')} {($ VSub_DollarName '$REV') (Lit_Other '^')} ) (C {(apply_stash)} {(DQ ($ VSub_At '$@'))}) (command.BraceGroup children: [ (command.AndOr ops: [Op_DPipe] children: [ (C {(test)} {(-z)} {(DQ ($ VSub_DollarName '$IS_STASH_REF'))}) (C {(drop_stash)} {(DQ ($ VSub_At '$@'))}) ] ) ] ) ] ) ] ) ) (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:PARSE_CACHE) op:Equal rhs:{(SQ <--not-parsed>)})] ) (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:seen_non_option) op:Equal rhs:(word.EmptyWord))] ) (command.ForEach iter_name: opt do_arg_iter: T body: (command.DoGroup children: [ (command.Case to_match: {(DQ ($ VSub_DollarName '$opt'))} arms: [ (case_arm pat_list:[{(-) (Lit_Other '*')}]) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (command.Sentence child: (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:seen_non_option) op: Equal rhs: {(t)} ) ] ) terminator: <Op_Semi ';'> ) (command.ControlFlow token:<ControlFlow_Break break>) ] ) ] ) ] ) ) (command.AndOr ops: [Op_DPipe] children: [ (C {(test)} {(-n)} {(DQ ($ VSub_DollarName '$seen_non_option'))}) (C {(set)} {(DQ (save))} {(DQ ($ VSub_At '$@'))}) ] ) (command.Case to_match: {(DQ ($ VSub_Number '$1'))} arms: [ (case_arm pat_list: [{(list)}] action: [(C {(shift)}) (C {(list_stash)} {(DQ ($ VSub_At '$@'))})] ) (case_arm pat_list: [{(show)}] action: [(C {(shift)}) (C {(show_stash)} {(DQ ($ VSub_At '$@'))})] ) (case_arm pat_list: [{(save)}] action: [(C {(shift)}) (C {(save_stash)} {(DQ ($ VSub_At '$@'))})] ) (case_arm pat_list: [{(apply)}] action: [(C {(shift)}) (C {(apply_stash)} {(DQ ($ VSub_At '$@'))})] ) (case_arm pat_list: [{(clear)}] action: [(C {(shift)}) (C {(clear_stash)} {(DQ ($ VSub_At '$@'))})] ) (case_arm pat_list: [{(create)}] action: [ (C {(shift)}) (command.AndOr ops: [Op_DAmp] children: [ (C {(create_stash)} {(DQ ($ VSub_Star '$*'))}) (C {(echo)} {(DQ ($ VSub_DollarName '$w_commit'))}) ] ) ] ) (case_arm pat_list: [{(store)}] action: [(C {(shift)}) (C {(store_stash)} {(DQ ($ VSub_At '$@'))})] ) (case_arm pat_list: [{(drop)}] action: [(C {(shift)}) (C {(drop_stash)} {(DQ ($ VSub_At '$@'))})] ) (case_arm pat_list: [{(pop)}] action: [(C {(shift)}) (C {(pop_stash)} {(DQ ($ VSub_At '$@'))})] ) (case_arm pat_list: [{(branch)}] action: [(C {(shift)}) (C {(apply_to_branch)} {(DQ ($ VSub_At '$@'))})] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (command.Case to_match: {($ VSub_Pound '$#')} arms: [ (case_arm pat_list: [{(0)}] action: [ (command.AndOr ops: [Op_DAmp] children: [ (C {(save_stash)}) (C {(say)} { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(gettext)} { (DQ ('(To restore them type ') (word_part.EscapedLiteralPart token: <Lit_EscapedChar '\\"'> ) ('git stash apply') (word_part.EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (')') ) } ) ] ) left_token: <Left_CommandSub '$('> ) ) } ) ] ) ] ) (case_arm pat_list:[{(Lit_Other '*')}] action:[(C {(usage)})]) ] ) ] ) ] ) ] )