(command.CommandList children: [ (C {<.>} {<git-sh-i18n>}) (C {<unset>} {<CDPATH>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IFS='> name:IFS) op: assign_op.Equal rhs: {(SQ <' \t\n'>)} spids: [47] ) ] redirects: [] ) (command.ShFunction name: git_broken_path_fix body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case to_match: {(DQ <':'> ($ Id.VSub_DollarName PATH) <':'>)} arms: [ (case_arm pat_list: [ {<Id.Lit_Star '*'> <Id.Lit_Colon ':'> ($ Id.VSub_Number 1) <Id.Lit_Colon ':'> <Id.Lit_Star '*'> } ] action: [(C {<Id.Lit_Colon ':'>} {<ok>})] spids: [72 77 83 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PATH='> name:PATH) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SANE_TOOL_PATH='> name: SANE_TOOL_PATH ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 1))} spids: [94] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'IFS='> name: IFS ) op: assign_op.Equal rhs: {<Id.Lit_Colon ':'>} spids: [100] ) (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'path='> name: path ) op: assign_op.Equal rhs: (rhs_word.Empty) spids: [103] ) (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'sep='> name: sep ) op: assign_op.Equal rhs: (rhs_word.Empty) spids: [105] ) ] redirects: [] ) (C {<set>} {<x>} {($ Id.VSub_DollarName PATH)}) (C {<shift>}) (command.ForEach iter_names: [elem] iterable: (for_iter.Args) body: (command.DoGroup children: [ (command.Case to_match: { (DQ ($ Id.VSub_DollarName SANE_TOOL_PATH) <':'> ($ Id.VSub_DollarName elem) ) } arms: [ (case_arm pat_list: [ {<Id.Lit_QMark '?'> <Id.Lit_Star '*'> <Id.Lit_Colon ':'> <'/bin'> } {<Id.Lit_QMark '?'> <Id.Lit_Star '*'> <Id.Lit_Colon ':'> <'/usr/bin'> } ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'path='> name: path ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName path) ($ Id.VSub_DollarName sep) ($ Id.VSub_DollarName SANE_TOOL_PATH) ) } spids: [152] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'sep='> name: sep ) op: assign_op.Equal rhs: {<Id.Lit_Colon ':'>} spids: [160] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SANE_TOOL_PATH='> name: SANE_TOOL_PATH ) op: assign_op.Equal rhs: (rhs_word.Empty) spids: [164] ) ] redirects: [] ) ] spids: [137 149 -1 167] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'path='> name: path ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName path) ($ Id.VSub_DollarName sep) ($ Id.VSub_DollarName elem) ) } spids: [170] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'sep='> name: sep ) op: assign_op.Equal rhs: {<Id.Lit_Colon ':'>} spids: [178] ) ] redirects: [] ) ] ) redirects: [] ) (C {<echo>} {(DQ ($ Id.VSub_DollarName path))}) ] ) right: <Id.Eof_RParen _> ) } spids: [90] ) ] redirects: [] ) ] spids: [86 87 195 -1] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: die body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [(C {<die_with_status>} {<1>} {(DQ ($ Id.VSub_At '@'))})] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: die_with_status body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'status='> name:status) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [234] ) ] redirects: [] ) (C {<shift>}) (command.Simple words: [{<printf>} {(SQ <'%s\\n'>)} {(DQ ($ Id.VSub_Star '*'))}] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] more_env: [] do_fork: T ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {(DQ ($ Id.VSub_DollarName status))} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GIT_QUIET='> name:GIT_QUIET) op: assign_op.Equal rhs: (rhs_word.Empty) spids: [264] ) ] redirects: [] ) (command.ShFunction name: say body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [(C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName GIT_QUIET))})] ) action: [(C {<printf>} {(SQ <'%s\\n'>)} {(DQ ($ Id.VSub_Star '*'))})] spids: [275 286] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName OPTIONS_SPEC))}) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShFunction name: usage body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {(DQ ($ Id.VSub_Number 0))} {<-h>}) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'parseopt_extra='> name:parseopt_extra) op: assign_op.Equal rhs: (rhs_word.Empty) spids: [342] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName OPTIONS_KEEPDASHDASH))} {<Id.Lit_RBracket ']'>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'parseopt_extra='> name: parseopt_extra ) op: assign_op.Equal rhs: {(DQ <--keep-dashdash>)} spids: [358] ) ] redirects: [] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName OPTIONS_STUCKLONG))} {<Id.Lit_RBracket ']'>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'parseopt_extra='> name: parseopt_extra ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName parseopt_extra) <' --stuck-long'>)} spids: [377] ) ] redirects: [] ) ] ) (C {<eval>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_DollarName OPTIONS_SPEC))}) (C {<git>} {<rev-parse>} {<--parseopt>} {($ Id.VSub_DollarName parseopt_extra)} {<-->} {(DQ ($ Id.VSub_At '@'))} ) ] negated: F stderr_indices: [] ) (C {<echo>} {<Id.ControlFlow_Exit exit>} {($ Id.VSub_QMark '?')}) ] ) right: <Id.Eof_RParen _> ) ) } ) ] spids: [305 316] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dashless='> name:dashless) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<basename>} {<-->} {(DQ ($ Id.VSub_Number 0))}) (C {<sed>} {<-e>} {(SQ <'s/-/ /'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } spids: [430] ) ] redirects: [] ) (command.ShFunction name: usage body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<die>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<eval_gettext>} { (DQ <'usage: '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'dashless '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <USAGE> ) } ) right: <Id.Eof_RParen _> ) ) } ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName LONG_USAGE))} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LONG_USAGE='> name:LONG_USAGE) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<eval_gettext>} { (DQ <'usage: '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'dashless '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <USAGE> ) } ) right: <Id.Eof_RParen _> ) ) } spids: [496] ) ] redirects: [] ) ] spids: [480 493] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LONG_USAGE='> name:LONG_USAGE) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<eval_gettext>} { (DQ <'usage: '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'dashless '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'USAGE\n'> <'\n'> ($ Id.VSub_DollarName LONG_USAGE) ) } ) right: <Id.Eof_RParen _> ) ) } spids: [515] ) ] redirects: [] ) ] redirects: [] ) (command.Case to_match: {(DQ ($ Id.VSub_Number 1))} arms: [ (case_arm pat_list: [{<-h>}] action: [ (C {<echo>} {(DQ ($ Id.VSub_DollarName LONG_USAGE))}) (command.ControlFlow token:<Id.ControlFlow_Exit exit>) ] spids: [546 547 -1 560] ) ] redirects: [] ) ] redirects: [] ) (command.ShFunction name: set_reflog_action body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<-z>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name GIT_REFLOG_ACTION> var_name: GIT_REFLOG_ACTION suffix_op: (suffix_op.Unary op:<Id.VTest_ColonPlus _> arg_word:{<set>}) right: <Id.Right_DollarBrace '}'> ) ) } {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'GIT_REFLOG_ACTION='> name: GIT_REFLOG_ACTION ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Star '*'))} spids: [694] ) ] redirects: [] ) (C {<export>} {<GIT_REFLOG_ACTION>}) ] spids: [674 691] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: git_editor body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<test>} {<-z>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name GIT_EDITOR> var_name: GIT_EDITOR suffix_op: (suffix_op.Unary op:<Id.VTest_ColonPlus _> arg_word:{<set>}) right: <Id.Right_DollarBrace '}'> ) ) } ) ] ) action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'GIT_EDITOR='> name: GIT_EDITOR ) op: assign_op.Equal rhs: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<Id.KW_Var var>} {<GIT_EDITOR>}) right: <Id.Eof_RParen _> ) ) } spids: [735] ) ] redirects: [] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {($ Id.VSub_QMark '?')} ) ] ) ] spids: [717 732] ) ] else_action: [] redirects: [] ) (C {<eval>} {(DQ ($ Id.VSub_DollarName GIT_EDITOR))} {(SQ <'"$@"'>)}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: git_pager body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands:[(C {<test>} {<-t>} {<1>})]) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GIT_PAGER='> name:GIT_PAGER) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<Id.KW_Var var>} {<GIT_PAGER>}) right: <Id.Eof_RParen _> ) } spids: [789] ) ] redirects: [] ) ] spids: [777 786] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GIT_PAGER='> name:GIT_PAGER) op: assign_op.Equal rhs: {<cat>} spids: [802] ) ] redirects: [] ) ] redirects: [] ) (command.ForEach iter_names: [vardef] iterable: (for_iter.Words words: [ {<Id.Lit_At '@'> <Id.Lit_Splice '@PAGER_ENV'> <Id.Lit_At '@'> <Id.Lit_At '@'>} ] ) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'var='> name:var) op: assign_op.Equal rhs: { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name vardef> var_name: vardef suffix_op: (suffix_op.Unary op: <Id.VOp1_DPercent '%%'> arg_word: {<'='> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) } spids: [824] ) ] redirects: [] ) (C {<eval>} { (DQ <': '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'{'> ($ Id.VSub_DollarName vardef) <'}'> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\"'> ch: '"' ) <' && export '> ($ Id.VSub_DollarName var) ) } ) ] ) redirects: [] ) (C {<eval>} {(DQ ($ Id.VSub_DollarName GIT_PAGER))} {(SQ <'"$@"'>)}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: sane_grep body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple words: [ {<grep>} {<Id.Lit_At '@'> <Id.Lit_Splice '@SANE_TEXT_GREP'> <Id.Lit_At '@'> <Id.Lit_At '@'>} {(DQ ($ Id.VSub_At '@'))} ] redirects: [] more_env: [ (env_pair name:GREP_OPTIONS val:(rhs_word.Empty) spids:[873]) (env_pair name:LC_ALL val:{<C>} spids:[875]) ] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: sane_egrep body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple words: [ {<egrep>} {<Id.Lit_At '@'> <Id.Lit_Splice '@SANE_TEXT_GREP'> <Id.Lit_At '@'> <Id.Lit_At '@'>} {(DQ ($ Id.VSub_At '@'))} ] redirects: [] more_env: [ (env_pair name:GREP_OPTIONS val:(rhs_word.Empty) spids:[900]) (env_pair name:LC_ALL val:{<C>} spids:[902]) ] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: is_bare_repository body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [(C {<git>} {<rev-parse>} {<--is-bare-repository>})] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: cd_to_toplevel body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DPipe] children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cdup='> name:cdup) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<rev-parse>} {<--show-toplevel>}) right: <Id.Eof_RParen _> ) } spids: [944] ) ] redirects: [] ) (C {<cd>} {(DQ ($ Id.VSub_DollarName cdup))}) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple words: [ {<gettextln>} { (DQ <'Cannot chdir to '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'cdup, the toplevel of the working tree'> ) } ] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] more_env: [] do_fork: T ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: require_work_tree_exists body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<test>} { (DQ <z> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<rev-parse>} {<--is-bare-repository>}) right: <Id.Eof_RParen _> ) ) } {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<zfalse>} ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'program_name='> name: program_name ) op: assign_op.Equal rhs: {($ Id.VSub_Number 0)} spids: [1021] ) ] redirects: [] ) (C {<die>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<gettext>} { (DQ <'fatal: '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'program_name cannot be used without a working tree.'> ) } ) right: <Id.Eof_RParen _> ) ) } ) ] spids: [997 1018] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: require_work_tree body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<test>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple words: [{<git>} {<rev-parse>} {<--is-inside-work-tree>}] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } {<Id.Lit_Equals '='>} {<true>} ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'program_name='> name: program_name ) op: assign_op.Equal rhs: {($ Id.VSub_Number 0)} spids: [1077] ) ] redirects: [] ) (C {<die>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<gettext>} { (DQ <'fatal: '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'program_name cannot be used without a working tree.'> ) } ) right: <Id.Eof_RParen _> ) ) } ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: require_clean_work_tree body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple words: [{<git>} {<rev-parse>} {<--verify>} {<HEAD>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] ) (C {<git>} {<update-index>} {<-q>} {<--ignore-submodules>} {<--refresh>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'err='> name:err) op: assign_op.Equal rhs: {<0>} spids: [1138] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Pipeline children: [(C {<git>} {<diff-files>} {<--quiet>} {<--ignore-submodules>})] negated: T stderr_indices: [] ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'action='> name:action) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [1159] ) ] redirects: [] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName action))} arms: [ (case_arm pat_list: [{<rebase>}] action: [ (command.Simple words: [{<gettextln>} {(DQ <'Cannot rebase: You have unstaged changes.'>)}] redirects: [ (redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] more_env: [] do_fork: T ) ] spids: [1172 1173 1186 -1] ) (case_arm pat_list: [{(DQ <'rewrite branches'>)}] action: [ (command.Simple words: [ {<gettextln>} {(DQ <'Cannot rewrite branches: You have unstaged changes.'>)} ] redirects: [ (redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] more_env: [] do_fork: T ) ] spids: [1189 1192 1205 -1] ) (case_arm pat_list: [{(DQ <'pull with rebase'>)}] action: [ (command.Simple words: [ {<gettextln>} {(DQ <'Cannot pull with rebase: You have unstaged changes.'>)} ] redirects: [ (redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] more_env: [] do_fork: T ) ] spids: [1208 1211 1224 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.Simple words: [ {<eval_gettextln>} { (DQ <'Cannot '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'action: You have unstaged changes.'> ) } ] redirects: [ (redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] more_env: [] do_fork: T ) ] spids: [1227 1228 1243 -1] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'err='> name:err) op: assign_op.Equal rhs: {<1>} spids: [1249] ) ] redirects: [] ) ] spids: [1143 1156] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Pipeline children: [ (C {<git>} {<diff-index>} {<--cached>} {<--quiet>} {<--ignore-submodules>} {<HEAD>} {<-->} ) ] negated: T stderr_indices: [] ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<test>} {($ Id.VSub_DollarName err)} {<Id.Lit_Equals '='>} {<0>}) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'action='> name:action) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [1293] ) ] redirects: [] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName action))} arms: [ (case_arm pat_list: [{<rebase>}] action: [ (command.Simple words: [ {<gettextln>} { (DQ < 'Cannot rebase: Your index contains uncommitted changes.' > ) } ] redirects: [ (redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] more_env: [] do_fork: T ) ] spids: [1306 1307 1320 -1] ) (case_arm pat_list: [{(DQ <'pull with rebase'>)}] action: [ (command.Simple words: [ {<gettextln>} { (DQ < 'Cannot pull with rebase: Your index contains uncommitted changes.' > ) } ] redirects: [ (redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] more_env: [] do_fork: T ) ] spids: [1323 1326 1339 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.Simple words: [ {<eval_gettextln>} { (DQ <'Cannot '> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\$'> ch: '$' ) <'action: Your index contains uncommitted changes.'> ) } ] redirects: [ (redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] more_env: [] do_fork: T ) ] spids: [1342 1343 1358 -1] ) ] redirects: [] ) ] spids: [1279 1290] ) ] else_action: [ (command.Simple words: [ {<gettextln>} {(DQ <'Additionally, your index contains uncommitted changes.'>)} ] redirects: [ (redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] more_env: [] do_fork: T ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'err='> name:err) op: assign_op.Equal rhs: {<1>} spids: [1380] ) ] redirects: [] ) ] spids: [1257 1276] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [(C {<test>} {($ Id.VSub_DollarName err)} {<Id.Lit_Equals '='>} {<1>})] ) action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<test>} {<-n>} {(DQ ($ Id.VSub_Number 2))}) (command.Simple words: [{<echo>} {(DQ ($ Id.VSub_Number 2))}] redirects: [ (redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] more_env: [] do_fork: T ) ] ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [1388 1399] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: pick_ident_script body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands:[(C {<test>} {($ Id.VSub_Pound '#')} {<-gt>} {<0>})]) body: (command.DoGroup children: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'lid='> name:lid) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [1481] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (C {<shift>}) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'uid='> name:uid) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [1488] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (C {<shift>}) (C {<printf>} {(SQ <'%s'>)} { (DQ <'\n'> <'\t\t/^'> ($ Id.VSub_DollarName lid) <' /{\n'> <'\t\t\ts/\'/\''> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\\'> ch: '\\' ) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'> ch:'\\') <'\'\'/g\n'> <'\t\t\th\n'> <'\t\t\ts/^'> ($ Id.VSub_DollarName lid) <' '> ) (SQ <'\\([^<]*\\) <[^>]*> .*$/\\1/'>) (DQ <'\n'> <'\t\t\ts/.*/GIT_'> (${ Id.VSub_Name uid) <'_NAME=\'&\'/p\n'> <'\n'> <'\t\t\tg\n'> <'\t\t\ts/^'> ($ Id.VSub_DollarName lid) <' '> ) (SQ <'[^<]* <\\([^>]*\\)> .*$/\\1/'>) (DQ <'\n'> <'\t\t\ts/.*/GIT_'> (${ Id.VSub_Name uid) <'_EMAIL=\'&\'/p\n'> <'\n'> <'\t\t\tg\n'> <'\t\t\ts/^'> ($ Id.VSub_DollarName lid) <' '> ) (SQ <'[^<]* <[^>]*> \\(.*\\)$/@\\1/'>) (DQ <'\n'> <'\t\t\ts/.*/GIT_'> (${ Id.VSub_Name uid) <'_DATE=\'&\'/p\n'> <'\t\t}\n'> <'\t\t'> ) } ) ] ) redirects: [] ) (C {<echo>} {(SQ <'/^$/q'>)}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: parse_ident_from_commit body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple words: [ {<sed>} {<-ne>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<pick_ident_script>} {(DQ ($ Id.VSub_At '@'))}) right: <Id.Eof_RParen _> ) ) } ] redirects: [] more_env: [ (env_pair name:LANG val:{<C>} spids:[1588]) (env_pair name:LC_ALL val:{<C>} spids:[1591]) ] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: get_author_ident_from_commit body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'encoding='> name:encoding) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<git>} {<config>} {<i18n.commitencoding>}) (C {<echo>} {<UTF-8>}) ] ) right: <Id.Eof_RParen _> ) } spids: [1625] ) ] redirects: [] ) (command.Pipeline children: [ (C {<git>} {<show>} {<-s>} {<--pretty> <Id.Lit_Equals '='> <raw>} {<--encoding> <Id.Lit_Equals '='> (DQ ($ Id.VSub_DollarName encoding))} {(DQ ($ Id.VSub_Number 1))} {<-->} ) (C {<parse_ident_from_commit>} {<author>} {<AUTHOR>}) ] negated: F stderr_indices: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: clear_local_git_env body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<unset>} { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<rev-parse>} {<--local-env-vars>}) right: <Id.Eof_RParen _> ) } ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: create_virtual_base body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sz0='> name:sz0) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple words: [{<wc>} {<-c>}] redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_Number 1))} ) ] more_env: [] do_fork: T ) right: <Id.Eof_RParen _> ) } spids: [1717] ) ] redirects: [] ) (command.Pipeline children: [ (C {<Id.Lit_At '@'> <Id.Lit_Splice '@DIFF'> <Id.Lit_At '@'> <Id.Lit_At '@'>} {<-u>} {<'-La/'> (DQ ($ Id.VSub_Number 1))} {<'-Lb/'> (DQ ($ Id.VSub_Number 1))} {(DQ ($ Id.VSub_Number 1))} {(DQ ($ Id.VSub_Number 2))} ) (C {<git>} {<apply>} {<--no-add>}) ] negated: F stderr_indices: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sz1='> name:sz1) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple words: [{<wc>} {<-c>}] redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_Number 1))} ) ] more_env: [] do_fork: T ) right: <Id.Eof_RParen _> ) } spids: [1764] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple words: [ {<expr>} {($ Id.VSub_DollarName sz0)} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\<'> ch:'<')} {($ Id.VSub_DollarName sz1)} {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\*'> ch:'*')} {<2>} ] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<Id.Lit_Colon ':'>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_Number 1))} ) ] more_env: [] do_fork: T ) ] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Case to_match: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<uname>} {<-s>}) right: <Id.Eof_RParen _> ) } arms: [ (case_arm pat_list: [{<Id.Lit_Star '*'> <MINGW> <Id.Lit_Star '*'>}] action: [ (command.ShFunction name: sort body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [(C {<'/usr/bin/sort'>} {(DQ ($ Id.VSub_At '@'))})] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: find body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [(C {<'/usr/bin/find'>} {(DQ ($ Id.VSub_At '@'))})] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: pwd body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [(C {<builtin>} {<pwd>} {<-W>})] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: is_absolute_path body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case to_match: {(DQ ($ Id.VSub_Number 1))} arms: [ (case_arm pat_list: [ {<Id.Lit_LBracket '['> <'/'> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\\'> ch: '\\' ) <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> } {<Id.Lit_LBracket '['> <A-Za-z> <Id.Lit_RBracket ']'> <Id.Lit_Colon ':'> <Id.Lit_Star '*'> } ] action: [ (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [1912 1925 1932 -1] ) ] redirects: [] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) ] spids: [1827 1830 1946 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.ShFunction name: is_absolute_path body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case to_match: {(DQ ($ Id.VSub_Number 1))} arms: [ (case_arm pat_list: [{<'/'> <Id.Lit_Star '*'>}] action: [ (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [1969 1971 1978 -1] ) ] redirects: [] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<1>} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) ] spids: [1948 1949 -1 1991] ) ] redirects: [] ) (command.ShFunction name: git_dir_init body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GIT_DIR='> name:GIT_DIR) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<rev-parse>} {<--git-dir>}) right: <Id.Eof_RParen _> ) } spids: [2008] ) ] redirects: [] ) (command.ControlFlow token:<Id.ControlFlow_Exit exit>) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName SUBDIRECTORY_OK))} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<test>} {<-z>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<rev-parse>} {<--show-cdup>}) right: <Id.Eof_RParen _> ) ) } ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'exit='> name:exit) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [2057] ) ] redirects: [] ) (command.Simple words: [ {<gettextln>} { (DQ < 'You need to run this command from the toplevel of the working tree.' > ) } ] redirects: [ (redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] more_env: [] do_fork: T ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {($ Id.VSub_DollarName exit)} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ) ] spids: [2022 2035] ) ] else_action: [] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DPipe] children: [ (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName GIT_DIR))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GIT_DIR='> name:GIT_DIR) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.AndOr ops: [Id.Op_DAmp] children: [(C {<cd>} {(DQ ($ Id.VSub_DollarName GIT_DIR))}) (C {<pwd>})] ) right: <Id.Eof_RParen _> ) } spids: [2092] ) ] redirects: [] ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple words: [ {<gettextln>} {(DQ <'Unable to determine absolute path of git directory'>)} ] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] more_env: [] do_fork: T ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ) (C {<Id.Lit_Colon ':'>} { (DQ (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name GIT_OBJECT_DIRECTORY> var_name: GIT_OBJECT_DIRECTORY suffix_op: (suffix_op.Unary op: <Id.VTest_Equals _> arg_word: { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<rev-parse>} {<--git-path>} {<objects>}) right: <Id.Eof_RParen _> ) ) } ) right: <Id.Right_DollarBrace '}'> ) ) } ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [(C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName NONGIT_OK))})] ) action: [(C {<git_dir_init>})] spids: [2151 2161] ) ] else_action: [] redirects: [] ) (command.ShFunction name: peel_committish body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Case to_match: {(DQ ($ Id.VSub_Number 1))} arms: [ (case_arm pat_list: [{<Id.Lit_Colon ':'> <'/'> <Id.Lit_Star '*'>}] action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'peeltmp='> name:peeltmp) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<git>} {<rev-parse>} {<--verify>} {(DQ ($ Id.VSub_Number 1))}) right: <Id.Eof_RParen _> ) } spids: [2192] ) ] redirects: [] ) (C {<git>} {<rev-parse>} {<--verify>} {(DQ (${ Id.VSub_Name peeltmp) <'^0'>)}) ] ) ] spids: [2186 2189 2222 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [(C {<git>} {<rev-parse>} {<--verify>} {(DQ (${ Id.VSub_Number 1) <'^0'>)})] spids: [2225 2226 2243 -1] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) ] )