(List (Com {[LIT_CHARS .]} {[LIT_CHARS git-sh-i18n]}) (Com {[LIT_CHARS unset]} {[LIT_CHARS CDPATH]}) (= scope= flags=0 words=[] bindings=[('IFS', {[SQ ]})]) (FunctionDef git_broken_path_fix [] (Case to_match={[DQ [LIT_CHARS ":"][VarSub PATH][LIT_CHARS ":"]]}, pat_word_list=[[{[LIT_OTHER "*"] [LIT_OTHER ":"] [VarSub 1] [LIT_OTHER ":"] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (Com {[LIT_OTHER ":"]} {[LIT_CHARS ok]}) (= scope= flags=0 words=[] bindings=[('PATH', {[ComSub (List (= scope= flags=0 words=[] bindings=[('SANE_TOOL_PATH', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('IFS', {[LIT_OTHER ":"]}), ('path', {[SQ ]}), ('sep', {[SQ ]})]) (Com {[LIT_CHARS set]} {[LIT_CHARS x]} {[VarSub PATH]}) (Com {[LIT_CHARS shift]}) (For elem do_arg_iter) (List (Case to_match={[DQ [VarSub SANE_TOOL_PATH][LIT_CHARS ":"][VarSub elem]]}, pat_word_list=[[{[LIT_OTHER "?"] [LIT_OTHER "*"] [LIT_OTHER ":"] [LIT_CHARS /bin]}, {[LIT_OTHER "?"] [LIT_OTHER "*"] [LIT_OTHER ":"] [LIT_CHARS /usr/bin]}]] (List (= scope= flags=0 words=[] bindings=[('path', {[DQ [VarSub path][VarSub sep][VarSub SANE_TOOL_PATH]]})]) (= scope= flags=0 words=[] bindings=[('sep', {[LIT_OTHER ":"]})]) (= scope= flags=0 words=[] bindings=[('SANE_TOOL_PATH', {[SQ ]})]) ) ) (= scope= flags=0 words=[] bindings=[('path', {[DQ [VarSub path][VarSub sep][VarSub elem]]})]) (= scope= flags=0 words=[] bindings=[('sep', {[LIT_OTHER ":"]})]) ) ) (Com {[LIT_CHARS echo]} {[DQ [VarSub path]]}) )]})]) ) ) (FunctionDef die [] (Com {[LIT_CHARS die_with_status]} {[LIT_CHARS 1]} {[DQ [VarSub @]]}) ) (FunctionDef die_with_status [] (List (= scope= flags=0 words=[] bindings=[('status', {[VarSub 1]})]) (Com {[LIT_CHARS shift]}) (Com {[LIT_CHARS printf]} {[SQ ]} {[DQ [VarSub *]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[DQ [VarSub status]]}) ) ) (= scope= flags=0 words=[] bindings=[('GIT_QUIET', {[SQ ]})]) (FunctionDef say [] (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub GIT_QUIET]]}) (Com {[LIT_CHARS printf]} {[SQ ]} {[DQ [VarSub *]]}) ) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub OPTIONS_SPEC]]}) (List (FunctionDef usage [] (List (Com {[DQ [VarSub 0]]} {[LIT_CHARS -h]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (= scope= flags=0 words=[] bindings=[('parseopt_extra', {[SQ ]})]) (AndOr OP_AND_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -n]} {[DQ [VarSub OPTIONS_KEEPDASHDASH]]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('parseopt_extra', {[DQ [LIT_CHARS --keep-dashdash]]})]) ) (AndOr OP_AND_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -n]} {[DQ [VarSub OPTIONS_STUCKLONG]]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('parseopt_extra', {[DQ [VarSub parseopt_extra][LIT_CHARS " --stuck-long"]]})]) ) (Com {[LIT_CHARS eval]} {[DQ [ComSub (AndOr OP_OR_IF (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub OPTIONS_SPEC]]}) (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --parseopt]} {[VarSub parseopt_extra]} {[LIT_CHARS --]} {[DQ [VarSub @]]}) ) (Com {[LIT_CHARS echo]} {[LIT_CHARS exit]} {[VarSub ?]}) )]]}) ) (ElseTrue) (List (= scope= flags=0 words=[] bindings=[('dashless', {[ComSub (Pipeline (Com {[LIT_CHARS basename]} {[LIT_CHARS --]} {[DQ [VarSub 0]]}) (Com {[LIT_CHARS sed]} {[LIT_CHARS -e]} {[SQ ]}) )]})]) (FunctionDef usage [] (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "usage: "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "dashless "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS USAGE]]})]]}) ) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub LONG_USAGE]]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('LONG_USAGE', {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "usage: "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "dashless "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS USAGE]]})]]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('LONG_USAGE', {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "usage: "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "dashless "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "USAGE\n"][LIT_CHARS "\n"][VarSub LONG_USAGE]]})]]})]) ) (Case to_match={[DQ [VarSub 1]]}, pat_word_list=[[{[LIT_CHARS -h]}]] (List (Com {[LIT_CHARS echo]} {[DQ [VarSub LONG_USAGE]]}) (Com {[LIT_CHARS exit]}) ) ) ) ) (FunctionDef set_reflog_action [] (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub GIT_REFLOG_ACTION test_op=VS_TEST_COLON_PLUS {[LIT_CHARS set]}]]} {[LIT_OTHER "]"]}) (List (= scope= flags=0 words=[] bindings=[('GIT_REFLOG_ACTION', {[DQ [VarSub *]]})]) (= scope= flags=1 words=[{[LIT_CHARS GIT_REFLOG_ACTION]}] bindings=[]) ) ) ) (FunctionDef git_editor [] (List (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub GIT_EDITOR test_op=VS_TEST_COLON_PLUS {[LIT_CHARS set]}]]}) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('GIT_EDITOR', {[DQ [ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS var]} {[LIT_CHARS GIT_EDITOR]})]]})]) (Com {[LIT_CHARS return]} {[VarSub ?]}) ) ) (Com {[LIT_CHARS eval]} {[DQ [VarSub GIT_EDITOR]]} {[SQ ]}) ) ) (FunctionDef git_pager [] (List (If (Com {[LIT_CHARS test]} {[LIT_CHARS -t]} {[LIT_CHARS 1]}) (= scope= flags=0 words=[] bindings=[('GIT_PAGER', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS var]} {[LIT_CHARS GIT_PAGER]})]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('GIT_PAGER', {[LIT_CHARS cat]})]) ) (For vardef [{[LIT_OTHER "@"] [LIT_OTHER "@"] [LIT_CHARS PAGER_ENV] [LIT_OTHER "@"] [LIT_OTHER "@"]}]) (List (= scope= flags=0 words=[] bindings=[('var', {[VarSub vardef transform_ops=[VS_UNARY_DPERCENT {[LIT_CHARS "=*"]}]]})]) (Com {[LIT_CHARS eval]} {[DQ [LIT_CHARS ": "][\ LIT_ESCAPED_CHAR "\\\""][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "{"][VarSub vardef][LIT_CHARS "}"][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS " && export "][VarSub var]]}) ) ) (Com {[LIT_CHARS eval]} {[DQ [VarSub GIT_PAGER]]} {[SQ ]}) ) ) (FunctionDef sane_grep [] (Com {[LIT_CHARS grep]} {[LIT_OTHER "@"] [LIT_OTHER "@"] [LIT_CHARS SANE_TEXT_GREP] [LIT_OTHER "@"] [LIT_OTHER "@"]} {[DQ [VarSub @]]} more_env=[('GREP_OPTIONS', {[SQ ]}), ('LC_ALL', {[LIT_CHARS C]})] ) ) (FunctionDef sane_egrep [] (Com {[LIT_CHARS egrep]} {[LIT_OTHER "@"] [LIT_OTHER "@"] [LIT_CHARS SANE_TEXT_GREP] [LIT_OTHER "@"] [LIT_OTHER "@"]} {[DQ [VarSub @]]} more_env=[('GREP_OPTIONS', {[SQ ]}), ('LC_ALL', {[LIT_CHARS C]})] ) ) (FunctionDef is_bare_repository [] (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --is-bare-repository]}) ) (FunctionDef cd_to_toplevel [] (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('cdup', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --show-toplevel]})]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS cd]} {[DQ [VarSub cdup]]}) (List (Com {[LIT_CHARS gettextln]} {[DQ [LIT_CHARS "Cannot chdir to "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "cdup, the toplevel of the working tree"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) ) ) (FunctionDef require_work_tree_exists [] (If (Com {[LIT_CHARS test]} {[DQ [LIT_CHARS z][ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --is-bare-repository]})]]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[LIT_CHARS zfalse]}) (List (= scope= flags=0 words=[] bindings=[('program_name', {[VarSub 0]})]) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "fatal: "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "program_name cannot be used without a working tree."]]})]]}) ) ) ) (FunctionDef require_work_tree [] (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[DQ [ComSub (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --is-inside-work-tree]})]]} {[LIT_OTHER "="]} {[LIT_CHARS true]}) (List (= scope= flags=0 words=[] bindings=[('program_name', {[VarSub 0]})]) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "fatal: "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "program_name cannot be used without a working tree."]]})]]}) ) ) ) (FunctionDef require_clean_work_tree [] (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 exit]} {[LIT_CHARS 1]}) ) (Com {[LIT_CHARS git]} {[LIT_CHARS update-index]} {[LIT_CHARS -q]} {[LIT_CHARS --ignore-submodules]} {[LIT_CHARS --refresh]}) (= scope= flags=0 words=[] bindings=[('err', {[LIT_CHARS 0]})]) (If (Pipeline! (Com {[LIT_CHARS git]} {[LIT_CHARS diff-files]} {[LIT_CHARS --quiet]} {[LIT_CHARS --ignore-submodules]}) ) (List (= scope= flags=0 words=[] bindings=[('action', {[VarSub 1]})]) (Case to_match={[DQ [VarSub action]]}, pat_word_list=[[{[LIT_CHARS rebase]}], [{[DQ [LIT_CHARS "rewrite branches"]]}], [{[DQ [LIT_CHARS "pull with rebase"]]}], [{[LIT_OTHER "*"]}]] (Com {[LIT_CHARS gettextln]} {[DQ [LIT_CHARS "Cannot rebase: You have unstaged changes."]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS gettextln]} {[DQ [LIT_CHARS "Cannot rewrite branches: You have unstaged changes."]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS gettextln]} {[DQ [LIT_CHARS "Cannot pull with rebase: You have unstaged changes."]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS eval_gettextln]} {[DQ [LIT_CHARS "Cannot "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "action: You have unstaged changes."]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) ) (= scope= flags=0 words=[] bindings=[('err', {[LIT_CHARS 1]})]) ) ) (If (Pipeline! (Com {[LIT_CHARS git]} {[LIT_CHARS diff-index]} {[LIT_CHARS --cached]} {[LIT_CHARS --quiet]} {[LIT_CHARS --ignore-submodules]} {[LIT_CHARS HEAD]} {[LIT_CHARS --]}) ) (List (If (Com {[LIT_CHARS test]} {[VarSub err]} {[LIT_OTHER "="]} {[LIT_CHARS 0]}) (List (= scope= flags=0 words=[] bindings=[('action', {[VarSub 1]})]) (Case to_match={[DQ [VarSub action]]}, pat_word_list=[[{[LIT_CHARS rebase]}], [{[DQ [LIT_CHARS "pull with rebase"]]}], [{[LIT_OTHER "*"]}]] (Com {[LIT_CHARS gettextln]} {[DQ [LIT_CHARS "Cannot rebase: Your index contains uncommitted changes."]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS gettextln]} {[DQ [LIT_CHARS "Cannot pull with rebase: Your index contains uncommitted changes."]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS eval_gettextln]} {[DQ [LIT_CHARS "Cannot "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "action: Your index contains uncommitted changes."]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) ) ) (ElseTrue) (Com {[LIT_CHARS gettextln]} {[DQ [LIT_CHARS "Additionally, your index contains uncommitted changes."]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) ) (= scope= flags=0 words=[] bindings=[('err', {[LIT_CHARS 1]})]) ) ) (If (Com {[LIT_CHARS test]} {[VarSub err]} {[LIT_OTHER "="]} {[LIT_CHARS 1]}) (List (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub 2]]}) (Com {[LIT_CHARS echo]} {[DQ [VarSub 2]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) ) ) (FunctionDef pick_ident_script [] (List (While (Com {[LIT_CHARS test]} {[VarSub #]} {[LIT_CHARS -gt]} {[LIT_CHARS 0]}) (List (= scope= flags=0 words=[] bindings=[('lid', {[VarSub 1]})]) (Com {[LIT_CHARS shift]}) (= scope= flags=0 words=[] bindings=[('uid', {[VarSub 1]})]) (Com {[LIT_CHARS shift]}) (Com {[LIT_CHARS printf]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\t\t/^"][VarSub lid][LIT_CHARS " /{\n"][LIT_CHARS "\t\t\ts/'/'"][\ LIT_ESCAPED_CHAR "\\\\"][\ LIT_ESCAPED_CHAR "\\\\"][LIT_CHARS "''/g\n"][LIT_CHARS "\t\t\th\n"][LIT_CHARS "\t\t\ts/^"][VarSub lid][LIT_CHARS " "]] [SQ ]*> .*$/\\1/">] [DQ [LIT_CHARS "\n"][LIT_CHARS "\t\t\ts/.*/GIT_"][VarSub uid][LIT_CHARS "_NAME='&'/p\n"][LIT_CHARS "\n"][LIT_CHARS "\t\t\tg\n"][LIT_CHARS "\t\t\ts/^"][VarSub lid][LIT_CHARS " "]] [SQ ]*\\)> .*$/\\1/">] [DQ [LIT_CHARS "\n"][LIT_CHARS "\t\t\ts/.*/GIT_"][VarSub uid][LIT_CHARS "_EMAIL='&'/p\n"][LIT_CHARS "\n"][LIT_CHARS "\t\t\tg\n"][LIT_CHARS "\t\t\ts/^"][VarSub lid][LIT_CHARS " "]] [SQ ]*> \\(.*\\)$/@\\1/">] [DQ [LIT_CHARS "\n"][LIT_CHARS "\t\t\ts/.*/GIT_"][VarSub uid][LIT_CHARS "_DATE='&'/p\n"][LIT_CHARS "\t\t}\n"][LIT_CHARS "\t\t"]]}) ) ) (Com {[LIT_CHARS echo]} {[SQ ]}) ) ) (FunctionDef parse_ident_from_commit [] (Com {[LIT_CHARS sed]} {[LIT_CHARS -ne]} {[DQ [ComSub (Com {[LIT_CHARS pick_ident_script]} {[DQ [VarSub @]]})]]} more_env=[('LANG', {[LIT_CHARS C]}), ('LC_ALL', {[LIT_CHARS C]})] ) ) (FunctionDef get_author_ident_from_commit [] (List (= scope= flags=0 words=[] bindings=[('encoding', {[ComSub (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS i18n.commitencoding]}) (Com {[LIT_CHARS echo]} {[LIT_CHARS UTF-8]}) )]})]) (Pipeline (Com {[LIT_CHARS git]} {[LIT_CHARS show]} {[LIT_CHARS -s]} {[LIT_CHARS --pretty] [LIT_OTHER "="] [LIT_CHARS raw]} {[LIT_CHARS --encoding] [LIT_OTHER "="] [DQ [VarSub encoding]]} {[DQ [VarSub 1]]} {[LIT_CHARS --]}) (Com {[LIT_CHARS parse_ident_from_commit]} {[LIT_CHARS author]} {[LIT_CHARS AUTHOR]}) ) ) ) (FunctionDef clear_local_git_env [] (Com {[LIT_CHARS unset]} {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --local-env-vars]})]}) ) (FunctionDef create_virtual_base [] (List (= scope= flags=0 words=[] bindings=[('sz0', {[ComSub (Com redirects=[(FilenameRedirectNode filename={[DQ [VarSub 1]]} 0)]{[LIT_CHARS wc]} {[LIT_CHARS -c]})]})]) (Pipeline (Com {[LIT_OTHER "@"] [LIT_OTHER "@"] [LIT_CHARS DIFF] [LIT_OTHER "@"] [LIT_OTHER "@"]} {[LIT_CHARS -u]} {[LIT_CHARS -La/] [DQ [VarSub 1]]} {[LIT_CHARS -Lb/] [DQ [VarSub 1]]} {[DQ [VarSub 1]]} {[DQ [VarSub 2]]}) (Com {[LIT_CHARS git]} {[LIT_CHARS apply]} {[LIT_CHARS --no-add]}) ) (= scope= flags=0 words=[] bindings=[('sz1', {[ComSub (Com redirects=[(FilenameRedirectNode filename={[DQ [VarSub 1]]} 0)]{[LIT_CHARS wc]} {[LIT_CHARS -c]})]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS expr]} {[VarSub sz0]} {[\ LIT_ESCAPED_CHAR "\\<"]} {[VarSub sz1]} {[\ LIT_ESCAPED_CHAR "\\*"]} {[LIT_CHARS 2]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (Com {[LIT_OTHER ":"]} < (FilenameRedirectNode filename={[DQ [VarSub 1]]} "> 1), > ) ) ) ) (Case to_match={[ComSub (Com {[LIT_CHARS uname]} {[LIT_CHARS -s]})]}, pat_word_list=[[{[LIT_OTHER "*"] [LIT_CHARS MINGW] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (List (FunctionDef sort [] (Com {[LIT_CHARS /usr/bin/sort]} {[DQ [VarSub @]]}) ) (FunctionDef find [] (Com {[LIT_CHARS /usr/bin/find]} {[DQ [VarSub @]]}) ) (FunctionDef pwd [] (Com {[LIT_CHARS builtin]} {[LIT_CHARS pwd]} {[LIT_CHARS -W]}) ) (FunctionDef is_absolute_path [] (List (Case to_match={[DQ [VarSub 1]]}, pat_word_list=[[{[LIT_OTHER "["] [LIT_CHARS /] [\ LIT_ESCAPED_CHAR "\\\\"] [LIT_OTHER "]"] [LIT_OTHER "*"]}, {[LIT_OTHER "["] [LIT_CHARS A-Za-z] [LIT_OTHER "]"] [LIT_OTHER ":"] [LIT_OTHER "*"]}]] (Com {[LIT_CHARS return]} {[LIT_CHARS 0]}) ) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]}) ) ) ) (FunctionDef is_absolute_path [] (List (Case to_match={[DQ [VarSub 1]]}, pat_word_list=[[{[LIT_CHARS /] [LIT_OTHER "*"]}]] (Com {[LIT_CHARS return]} {[LIT_CHARS 0]}) ) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]}) ) ) ) (FunctionDef git_dir_init [] (List (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('GIT_DIR', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --git-dir]})]})]) (Com {[LIT_CHARS exit]}) ) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub SUBDIRECTORY_OK]]} {[LIT_OTHER "]"]}) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --show-cdup]})]]}) (List (= scope= flags=0 words=[] bindings=[('exit', {[VarSub ?]})]) (Com {[LIT_CHARS gettextln]} {[DQ [LIT_CHARS "You need to run this command from the toplevel of the working tree."]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[VarSub exit]}) ) ) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub GIT_DIR]]}) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('GIT_DIR', {[ComSub (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[DQ [VarSub GIT_DIR]]}) (Com {[LIT_CHARS pwd]}) )]})]) (List (Com {[LIT_CHARS gettextln]} {[DQ [LIT_CHARS "Unable to determine absolute path of git directory"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) ) (Com {[LIT_OTHER ":"]} {[DQ [VarSub GIT_OBJECT_DIRECTORY test_op=VS_TEST_EQUALS {[DQ [ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --git-path]} {[LIT_CHARS objects]})]]}]]}) ) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub NONGIT_OK]]}) (Com {[LIT_CHARS git_dir_init]}) ) (FunctionDef peel_committish [] (Case to_match={[DQ [VarSub 1]]}, pat_word_list=[[{[LIT_OTHER ":"] [LIT_CHARS /] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('peeltmp', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --verify]} {[DQ [VarSub 1]]})]})]) (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --verify]} {[DQ [VarSub peeltmp][LIT_CHARS "^0"]]}) ) (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --verify]} {[DQ [VarSub 1][LIT_CHARS "^0"]]}) ) ) )