(List (Com {[LIT_CHARS unset]} {[LIT_CHARS CDPATH]} ) (Com {[LIT_CHARS unset]} {[LIT_CHARS IFS]} ) (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 echo]} {[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_DBRACKET_LIKE "["]} {[LIT_CHARS -n]} {[DQ [VarSub OPTIONS_KEEPDASHDASH]]} {[LIT_DBRACKET_LIKE "]"]} ) (= scope= flags=0 words=[] bindings=[('parseopt_extra', {[DQ [LIT_CHARS --keep-dashdash]]})]) ) (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]} {[DQ [VarSub 0]]}) (Com {[LIT_CHARS sed]} {[LIT_CHARS -e]} {[SQ ]}) )]})]) (FunctionDef usage [] (Com {[LIT_CHARS die]} {[DQ [LIT_CHARS "Usage: "][VarSub dashless][LIT_CHARS " "][VarSub USAGE]]} ) ) (If (Com {[LIT_DBRACKET_LIKE "["]} {[LIT_CHARS -z]} {[DQ [VarSub LONG_USAGE]]} {[LIT_DBRACKET_LIKE "]"]} ) (= scope= flags=0 words=[] bindings=[('LONG_USAGE', {[DQ [LIT_CHARS "Usage: "][VarSub dashless][LIT_CHARS " "][VarSub USAGE]]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('LONG_USAGE', {[DQ [LIT_CHARS "Usage: "][VarSub dashless][LIT_CHARS " "][VarSub USAGE][LIT_CHARS "\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_DBRACKET_LIKE "["]} {[LIT_CHARS -z]} {[DQ [VarSub GIT_REFLOG_ACTION test_op=VS_TEST_COLON_PLUS {[LIT_CHARS set]}]]} {[LIT_DBRACKET_LIKE "]"]} ) (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]})]) ) (Com {[LIT_OTHER ":"]} {[VarSub LESS test_op=VS_TEST_EQUALS {[LIT_CHARS -FRSX]}]} ) (= scope= flags=1 words=[{[LIT_CHARS LESS]}] bindings=[]) (Com {[LIT_CHARS eval]} {[DQ [VarSub GIT_PAGER]]} {[SQ ]} ) ) ) (FunctionDef sane_grep [] (Com {[LIT_CHARS grep]} {[DQ [VarSub @]]} more_env=[('GREP_OPTIONS', {[SQ ]}), ('LC_ALL', {[LIT_CHARS C]})] ) ) (FunctionDef sane_egrep [] (Com {[LIT_CHARS egrep]} {[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 echo]} {[DQ [LIT_CHARS "Cannot chdir to "][VarSub cdup][LIT_CHARS ", 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_NEQUAL "!="]} {[LIT_CHARS zfalse]} ) (Com {[LIT_CHARS die]} {[DQ [LIT_CHARS "fatal: "][VarSub 0][LIT_CHARS " 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_DBRACKET_LIKE "="]} {[LIT_CHARS true]} ) (Com {[LIT_CHARS die]} {[DQ [LIT_CHARS "fatal: "][VarSub 0][LIT_CHARS " 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 (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Cannot "][VarSub 1][LIT_CHARS ": 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_DBRACKET_LIKE "["]} {[VarSub err]} {[LIT_DBRACKET_LIKE "="]} {[LIT_CHARS 0]} {[LIT_DBRACKET_LIKE "]"]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Cannot "][VarSub 1][LIT_CHARS ": Your index contains uncommitted changes."]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (ElseTrue) (Com {[LIT_CHARS echo]} {[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_DBRACKET_LIKE "["]} {[VarSub err]} {[LIT_DBRACKET_LIKE "="]} {[LIT_CHARS 1]} {[LIT_DBRACKET_LIKE "]"]} ) (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 get_author_ident_from_commit [] (List (= scope= flags=0 words=[] bindings=[('pick_author_script', {[SQ ] [\ LIT_ESCAPED_CHAR "\\'"] [SQ ] [\ LIT_ESCAPED_CHAR "\\'"] [SQ ] [\ LIT_ESCAPED_CHAR "\\'"] [\ LIT_ESCAPED_CHAR "\\'"] [SQ ]*> .*$/\\1/\n"> ] [\ LIT_ESCAPED_CHAR "\\'"] [SQ ]*\\)> .*$/\\1/\n"> ] [\ LIT_ESCAPED_CHAR "\\'"] [SQ ]*> \\(.*\\)$/@\\1/\n"> ] [\ LIT_ESCAPED_CHAR "\\'"] [SQ ]})]) (= 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_DBRACKET_LIKE "="] [LIT_CHARS raw]} {[LIT_CHARS --encoding] [LIT_DBRACKET_LIKE "="] [DQ [VarSub encoding]]} {[DQ [VarSub 1]]} {[LIT_CHARS --]} ) (Com {[LIT_CHARS sed]} {[LIT_CHARS -ne]} {[DQ [VarSub pick_author_script]]} more_env=[('LANG', {[LIT_CHARS C]}), ('LC_ALL', {[LIT_CHARS C]})] ) ) ) ) (FunctionDef clear_local_git_env [] (Com {[LIT_CHARS unset]} {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --local-env-vars]})]} ) ) (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_DBRACKET_LIKE "["] [LIT_CHARS /] [\ LIT_ESCAPED_CHAR "\\\\"] [LIT_DBRACKET_LIKE "]"] [LIT_OTHER "*"]}, {[LIT_DBRACKET_LIKE "["] [LIT_CHARS A-Za-z] [LIT_DBRACKET_LIKE "]"] [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]} ) ) ) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub NONGIT_OK]]} ) (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_DBRACKET_LIKE "["]} {[LIT_CHARS -z]} {[DQ [VarSub SUBDIRECTORY_OK]]} {[LIT_DBRACKET_LIKE "]"]} ) (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 echo]} {[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 echo]} {[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 ":"]} {[VarSub GIT_OBJECT_DIRECTORY test_op=VS_TEST_EQUALS {[DQ [VarSub GIT_DIR][LIT_CHARS /objects]]}]} ) ) ) )