WARNING: Got redirects in assignment: %s [(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)] (List (= scope= flags=0 words=[] bindings=[('dashless', {[ComSub (Pipeline (Com {[LIT_CHARS basename]} {[DQ [VarSub 0]]}) (Com {[LIT_CHARS sed]} {[LIT_CHARS -e]} {[SQ ]}) )]})]) (= scope= flags=0 words=[] bindings=[('USAGE', {[DQ [LIT_CHARS "[--quiet] add [-b branch] [-f|--force] [--reference ] [--] []\n"][LIT_CHARS " or: "][VarSub dashless][LIT_CHARS " [--quiet] status [--cached] [--recursive] [--] [...]\n"][LIT_CHARS " or: "][VarSub dashless][LIT_CHARS " [--quiet] init [--] [...]\n"][LIT_CHARS " or: "][VarSub dashless][LIT_CHARS " [--quiet] update [--init] [-N|--no-fetch] [-f|--force] [--rebase] [--reference ] [--merge] [--recursive] [--] [...]\n"][LIT_CHARS " or: "][VarSub dashless][LIT_CHARS " [--quiet] summary [--cached|--files] [--summary-limit ] [commit] [--] [...]\n"][LIT_CHARS " or: "][VarSub dashless][LIT_CHARS " [--quiet] foreach [--recursive] \n"][LIT_CHARS " or: "][VarSub dashless][LIT_CHARS " [--quiet] sync [--] [...]"]]})]) (= scope= flags=0 words=[] bindings=[('OPTIONS_SPEC', {[SQ ]})]) (Com {[LIT_CHARS .]} {[LIT_CHARS git-sh-setup]} ) (Com {[LIT_CHARS .]} {[LIT_CHARS git-sh-i18n]} ) (Com {[LIT_CHARS .]} {[LIT_CHARS git-parse-remote]} ) (Com {[LIT_CHARS require_work_tree]} ) (= scope= flags=0 words=[] bindings=[('command', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('branch', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('force', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('reference', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('cached', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('recursive', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('init', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('files', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('nofetch', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('update', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('prefix', {[SQ ]})]) (FunctionDef resolve_relative_url [] (List (= scope= flags=0 words=[] bindings=[('remote', {[ComSub (Com {[LIT_CHARS get_default_remote]})]})]) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('remoteurl', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[DQ [LIT_CHARS remote.][VarSub remote][LIT_CHARS .url]]})]})]) (= scope= flags=0 words=[] bindings=[('remoteurl', {[ComSub (Com {[LIT_CHARS pwd]})]})]) ) (= scope= flags=0 words=[] bindings=[('url', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('remoteurl', {[VarSub remoteurl transform_ops=[VS_UNARY_PERCENT {[LIT_SLASH /]}]]})]) (= scope= flags=0 words=[] bindings=[('sep', {[LIT_CHARS /]})]) (= scope= flags=0 words=[] bindings=[('up_path', {[DQ [VarSub 2]]})]) (Case to_match={[DQ [VarSub remoteurl]]}, pat_word_list=[[{[LIT_OTHER "*"] [LIT_OTHER ":"] [LIT_OTHER "*"]}, {[LIT_CHARS /] [LIT_OTHER "*"]}], [{[LIT_CHARS ./] [LIT_OTHER "*"]}, {[LIT_CHARS ../] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (= scope= flags=0 words=[] bindings=[('is_relative', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('is_relative', {[LIT_CHARS t]})]) (List (= scope= flags=0 words=[] bindings=[('is_relative', {[LIT_CHARS t]})]) (= scope= flags=0 words=[] bindings=[('remoteurl', {[DQ [LIT_CHARS ./][VarSub remoteurl]]})]) ) ) (While (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub url]]} ) (Case to_match={[DQ [VarSub url]]}, pat_word_list=[[{[LIT_CHARS ../] [LIT_OTHER "*"]}], [{[LIT_CHARS ./] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (List (= scope= flags=0 words=[] bindings=[('url', {[DQ [VarSub url transform_ops=[VS_UNARY_POUND {[LIT_CHARS ..] [LIT_SLASH /]}]]]})]) (Case to_match={[DQ [VarSub remoteurl]]}, pat_word_list=[[{[LIT_OTHER "*"] [LIT_CHARS /] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"] [LIT_OTHER ":"] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (= scope= flags=0 words=[] bindings=[('remoteurl', {[DQ [VarSub remoteurl transform_ops=[VS_UNARY_PERCENT {[LIT_SLASH /] [LIT_CHARS "*"]}]]]})]) (List (= scope= flags=0 words=[] bindings=[('remoteurl', {[DQ [VarSub remoteurl transform_ops=[VS_UNARY_PERCENT {[LIT_CHARS ":*"]}]]]})]) (= scope= flags=0 words=[] bindings=[('sep', {[LIT_OTHER ":"]})]) ) (If (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub is_relative]]} ) (Com {[LIT_CHARS test]} {[DQ [LIT_CHARS .]]} {[LIT_DBRACKET_LIKE "="]} {[DQ [VarSub remoteurl]]} ) ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "cannot strip one component off url '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "remoteurl'"]]})]]} ) (ElseTrue) (= scope= flags=0 words=[] bindings=[('remoteurl', {[LIT_CHARS .]})]) ) ) ) (= scope= flags=0 words=[] bindings=[('url', {[DQ [VarSub url transform_ops=[VS_UNARY_POUND {[LIT_CHARS .] [LIT_SLASH /]}]]]})]) (Com {[LIT_CHARS break]} ) ) ) (= scope= flags=0 words=[] bindings=[('remoteurl', {[DQ [VarSub remoteurl][VarSub sep][VarSub url transform_ops=[VS_UNARY_PERCENT {[LIT_SLASH /]}]]]})]) (Com {[LIT_CHARS echo]} {[DQ [VarSub is_relative test_op=VS_TEST_COLON_PLUS {[VarSub up_path]}][VarSub remoteurl transform_ops=[VS_UNARY_POUND {[LIT_CHARS .] [LIT_SLASH /]}]]]} ) ) ) (FunctionDef module_list [] (Pipeline (Subshell (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS ls-files]} {[LIT_CHARS --error-unmatch]} {[LIT_CHARS --stage]} {[LIT_CHARS --]} {[DQ [VarSub @]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "unmatched pathspec exists"]]} ) ) ) (Com {[LIT_CHARS perl]} {[LIT_CHARS -e]} {[SQ ) {\n"> ]} ) ) ) (FunctionDef die_if_unmatched [] (If (Com {[LIT_CHARS test]} {[DQ [VarSub 1]]} {[LIT_DBRACKET_LIKE "="]} {[DQ [LIT_CHARS "#unmatched"]]} ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) ) (FunctionDef module_name [] (List (= scope= flags=0 words=[] bindings=[('sm_path', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('re', {[ComSub (Pipeline (Com {[LIT_CHARS printf]} {[SQ ]} {[DQ [VarSub 1]]}) (Com {[LIT_CHARS sed]} {[LIT_CHARS -e]} {[SQ ]}) )]})]) (= scope= flags=0 words=[] bindings=[('name', {[ComSub (Pipeline (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS -f]} {[LIT_CHARS .gitmodules]} {[LIT_CHARS --get-regexp]} {[SQ ]}) (Com {[LIT_CHARS sed]} {[LIT_CHARS -n]} {[LIT_CHARS -e]} {[SQ ] [DQ [VarSub re]] [SQ ]}) )]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub name]]} ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "No submodule mapping found in .gitmodules for path '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sm_path'"]]})]]} ) ) (Com {[LIT_CHARS echo]} {[DQ [VarSub name]]} ) ) ) (FunctionDef module_clone [] (List (= scope= flags=0 words=[] bindings=[('sm_path', {[VarSub 1]})]) (= scope= flags=0 words=[] bindings=[('url', {[VarSub 2]})]) (= scope= flags=0 words=[] bindings=[('reference', {[DQ [VarSub 3]]})]) (= scope= flags=0 words=[] bindings=[('quiet', {[SQ ]})]) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub GIT_QUIET]]} ) (= scope= flags=0 words=[] bindings=[('quiet', {[LIT_CHARS -q]})]) ) (= scope= flags=0 words=[] bindings=[('gitdir', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('gitdir_base', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('name', {[ComSub (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS module_name]} {[DQ [VarSub sm_path]]})]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub name]]} ) (= scope= flags=0 words=[] bindings=[('name', {[DQ [VarSub sm_path]]})]) ) (= scope= flags=0 words=[] bindings=[('base_name', {[ComSub (Com {[LIT_CHARS dirname]} {[DQ [VarSub name]]})]})]) (= scope= flags=0 words=[] bindings=[('gitdir', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --git-dir]})]})]) (= scope= flags=0 words=[] bindings=[('gitdir_base', {[DQ [VarSub gitdir][LIT_CHARS /modules/][VarSub base_name]]})]) (= scope= flags=0 words=[] bindings=[('gitdir', {[DQ [VarSub gitdir][LIT_CHARS /modules/][VarSub name]]})]) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -d]} {[DQ [VarSub gitdir]]} ) (List (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub sm_path]]} ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[DQ [VarSub gitdir][LIT_CHARS /index]]} ) ) (ElseTrue) (List (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub gitdir_base]]} ) (AndOr OP_OR_IF (Subshell (List (Com {[LIT_CHARS clear_local_git_env]} ) (Com {[LIT_CHARS git]} {[LIT_CHARS clone]} {[VarSub quiet]} {[LIT_CHARS -n]} {[VarSub reference test_op=VS_TEST_COLON_PLUS {[DQ [VarSub reference]]}]} {[LIT_CHARS --separate-git-dir]} {[DQ [VarSub gitdir]]} {[DQ [VarSub url]]} {[DQ [VarSub sm_path]]} ) ) ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Clone of '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "url' into submodule path '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sm_path' failed"]]})]]} ) ) ) ) (= scope= flags=0 words=[] bindings=[('a', {[ComSub (AndOr OP_AND_IF (Com {[LIT_CHARS cd_to_toplevel]}) (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[DQ [VarSub gitdir]]}) (Com {[LIT_CHARS pwd]}) ) )] [LIT_CHARS /]})]) (= scope= flags=0 words=[] bindings=[('b', {[ComSub (AndOr OP_AND_IF (Com {[LIT_CHARS cd_to_toplevel]}) (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[DQ [VarSub sm_path]]}) (Com {[LIT_CHARS pwd]}) ) )] [LIT_CHARS /]})]) (Case to_match={[VarSub a]}, pat_word_list=[[{[LIT_DBRACKET_LIKE "["] [LIT_CHARS a-zA-Z] [LIT_DBRACKET_LIKE "]"] [LIT_OTHER ":"] [LIT_CHARS /] [LIT_OTHER "*"]}]] (= scope= flags=0 words=[] bindings=[('a', {[LIT_CHARS /] [VarSub a transform_ops=[VS_UNARY_DPERCENT {[LIT_CHARS ":*"]}]] [VarSub a transform_ops=[VS_UNARY_POUND {[LIT_CHARS "*:"]}]]})]) ) (Case to_match={[VarSub b]}, pat_word_list=[[{[LIT_DBRACKET_LIKE "["] [LIT_CHARS a-zA-Z] [LIT_DBRACKET_LIKE "]"] [LIT_OTHER ":"] [LIT_CHARS /] [LIT_OTHER "*"]}]] (= scope= flags=0 words=[] bindings=[('b', {[LIT_CHARS /] [VarSub b transform_ops=[VS_UNARY_DPERCENT {[LIT_CHARS ":*"]}]] [VarSub b transform_ops=[VS_UNARY_POUND {[LIT_CHARS "*:"]}]]})]) ) (If (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[DQ [VarSub a transform_ops=[VS_UNARY_POUND {[VarSub b]}]]]} {[LIT_NEQUAL "!="]} {[DQ [VarSub a]]} ) (Com {[LIT_CHARS test]} {[DQ [VarSub b transform_ops=[VS_UNARY_POUND {[VarSub a]}]]]} {[LIT_NEQUAL "!="]} {[DQ [VarSub b]]} ) ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Gitdir '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "a' is part of the submodule path '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "b' or vice versa"]]})]]} ) ) (While (Com {[LIT_CHARS test]} {[DQ [VarSub a transform_ops=[VS_UNARY_DPERCENT {[LIT_SLASH /] [LIT_CHARS "*"]}]]]} {[LIT_DBRACKET_LIKE "="]} {[DQ [VarSub b transform_ops=[VS_UNARY_DPERCENT {[LIT_SLASH /] [LIT_CHARS "*"]}]]]} ) (List (= scope= flags=0 words=[] bindings=[('a', {[VarSub a transform_ops=[VS_UNARY_POUND {[LIT_CHARS "*"] [LIT_SLASH /]}]]})]) (= scope= flags=0 words=[] bindings=[('b', {[VarSub b transform_ops=[VS_UNARY_POUND {[LIT_CHARS "*"] [LIT_SLASH /]}]]})]) ) ) (= scope= flags=0 words=[] bindings=[('a', {[VarSub a transform_ops=[VS_UNARY_PERCENT {[LIT_SLASH /]}]]})]) (= scope= flags=0 words=[] bindings=[('b', {[VarSub b transform_ops=[VS_UNARY_PERCENT {[LIT_SLASH /]}]]})]) (= scope= flags=0 words=[] bindings=[('rel', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[VarSub b]}) (Com {[LIT_CHARS sed]} {[LIT_CHARS -e]} {[SQ ]}) )]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "gitdir: "][VarSub rel][LIT_CHARS /][VarSub a]]} < (FilenameRedirectNode filename={[DQ [VarSub sm_path][LIT_CHARS /.git]]} "> 1), > ) (= scope= flags=0 words=[] bindings=[('rel', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[VarSub a]}) (Com {[LIT_CHARS sed]} {[LIT_CHARS -e]} {[SQ ]}) )]})]) (Subshell (List (Com {[LIT_CHARS clear_local_git_env]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[DQ [VarSub sm_path]]} ) (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS core.worktree]} {[DQ [VarSub rel][LIT_CHARS /][VarSub b]]} more_env=[('GIT_WORK_TREE', {[LIT_CHARS .]})] ) ) ) ) ) ) (FunctionDef cmd_add [] (List (While (Com {[LIT_CHARS test]} {[VarSub #]} {[LIT_CHARS -ne]} {[LIT_CHARS 0]} ) (List (Case to_match={[DQ [VarSub 1]]}, pat_word_list=[[{[LIT_CHARS -b]}, {[LIT_CHARS --branch]}], [{[LIT_CHARS -f]}, {[LIT_CHARS --force]}], [{[LIT_CHARS -q]}, {[LIT_CHARS --quiet]}], [{[LIT_CHARS --reference]}], [{[LIT_CHARS --reference] [LIT_DBRACKET_LIKE "="] [LIT_OTHER "*"]}], [{[LIT_CHARS --]}], [{[LIT_CHARS -] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (List (Case to_match={[DQ [VarSub 2]]}, pat_word_list=[[{[SQ ]}]] (Com {[LIT_CHARS usage]} ) ) (= scope= flags=0 words=[] bindings=[('branch', {[VarSub 2]})]) (Com {[LIT_CHARS shift]} ) ) (= scope= flags=0 words=[] bindings=[('force', {[VarSub 1]})]) (= scope= flags=0 words=[] bindings=[('GIT_QUIET', {[LIT_CHARS 1]})]) (List (Case to_match={[DQ [VarSub 2]]}, pat_word_list=[[{[SQ ]}]] (Com {[LIT_CHARS usage]} ) ) (= scope= flags=0 words=[] bindings=[('reference', {[DQ [LIT_CHARS "--reference="][VarSub 2]]})]) (Com {[LIT_CHARS shift]} ) ) (List (= scope= flags=0 words=[] bindings=[('reference', {[DQ [VarSub 1]]})]) (Com {[LIT_CHARS shift]} ) ) (List (Com {[LIT_CHARS shift]} ) (Com {[LIT_CHARS break]} ) ) (Com {[LIT_CHARS usage]} ) (Com {[LIT_CHARS break]} ) ) (Com {[LIT_CHARS shift]} ) ) ) (= scope= flags=0 words=[] bindings=[('repo', {[VarSub 1]})]) (= scope= flags=0 words=[] bindings=[('sm_path', {[VarSub 2]})]) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub sm_path]]} ) (= scope= flags=0 words=[] bindings=[('sm_path', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub repo]]}) (Com {[LIT_CHARS sed]} {[LIT_CHARS -e]} {[SQ ]} {[LIT_CHARS -e]} {[SQ ]} {[LIT_CHARS -e]} {[SQ ]}) )]})]) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub repo]]} {[LIT_CHARS -o]} {[LIT_CHARS -z]} {[DQ [VarSub sm_path]]} ) (Com {[LIT_CHARS usage]} ) ) (Case to_match={[DQ [VarSub repo]]}, pat_word_list=[[{[LIT_CHARS ./] [LIT_OTHER "*"]}, {[LIT_CHARS ../] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"] [LIT_OTHER ":"] [LIT_OTHER "*"]}, {[LIT_CHARS /] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('realrepo', {[ComSub (Com {[LIT_CHARS resolve_relative_url]} {[DQ [VarSub repo]]})]})]) (Com {[LIT_CHARS exit]} ) ) (= scope= flags=0 words=[] bindings=[('realrepo', {[VarSub repo]})]) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "repo URL: '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "repo' must be absolute or begin with ./|../"]]})]]} ) ) (= scope= flags=0 words=[] bindings=[('sm_path', {[ComSub (Pipeline (Com {[LIT_CHARS printf]} {[SQ ]} {[DQ [VarSub sm_path]]}) (Com {[LIT_CHARS sed]} {[LIT_CHARS -e]} {[SQ ]}) )]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS ls-files]} {[LIT_CHARS --error-unmatch]} {[DQ [VarSub sm_path]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "'"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sm_path' already exists in the index"]]})]]} ) ) (If (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub force]]} ) (Pipeline! (Com {[LIT_CHARS git]} {[LIT_CHARS add]} {[LIT_CHARS --dry-run]} {[LIT_CHARS --ignore-missing]} {[DQ [VarSub sm_path]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) ) ) (List (Com {[LIT_CHARS eval_gettextln]} {[DQ [LIT_CHARS "The following path is ignored by one of your .gitignore files:\n"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sm_path\n"][LIT_CHARS "Use -f if you really want to add it."]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -e]} {[DQ [VarSub sm_path]]} ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -d]} {[DQ [VarSub sm_path]] [LIT_CHARS /.git]} {[LIT_CHARS -o]} {[LIT_CHARS -f]} {[DQ [VarSub sm_path]] [LIT_CHARS /.git]} ) (Com {[LIT_CHARS eval_gettextln]} {[DQ [LIT_CHARS "Adding existing repo at '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sm_path' to the index"]]} ) (ElseTrue) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "'"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sm_path' already exists and is not a valid git repo"]]})]]} ) ) (ElseTrue) (List (AndOr OP_OR_IF (Com {[LIT_CHARS module_clone]} {[DQ [VarSub sm_path]]} {[DQ [VarSub realrepo]]} {[DQ [VarSub reference]]} ) (Com {[LIT_CHARS exit]} ) ) (AndOr OP_OR_IF (Subshell (List (Com {[LIT_CHARS clear_local_git_env]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[DQ [VarSub sm_path]]} ) (Case to_match={[DQ [VarSub branch]]}, pat_word_list=[[{[SQ ]}], [{[LIT_OTHER "?"] [LIT_OTHER "*"]}]] (Com {[LIT_CHARS git]} {[LIT_CHARS checkout]} {[LIT_CHARS -f]} {[LIT_CHARS -q]} ) (Com {[LIT_CHARS git]} {[LIT_CHARS checkout]} {[LIT_CHARS -f]} {[LIT_CHARS -q]} {[LIT_CHARS -B]} {[DQ [VarSub branch]]} {[DQ [LIT_CHARS origin/][VarSub branch]]} ) ) ) ) ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Unable to checkout submodule '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sm_path'"]]})]]} ) ) ) ) (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS submodule.] [DQ [VarSub sm_path]] [LIT_CHARS .url]} {[DQ [VarSub realrepo]]} ) (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS add]} {[VarSub force]} {[DQ [VarSub sm_path]]} ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Failed to add submodule '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sm_path'"]]})]]} ) ) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS -f]} {[LIT_CHARS .gitmodules]} {[LIT_CHARS submodule.] [DQ [VarSub sm_path]] [LIT_CHARS .path]} {[DQ [VarSub sm_path]]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS -f]} {[LIT_CHARS .gitmodules]} {[LIT_CHARS submodule.] [DQ [VarSub sm_path]] [LIT_CHARS .url]} {[DQ [VarSub repo]]} ) (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS add]} {[LIT_CHARS --force]} {[LIT_CHARS .gitmodules]} ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Failed to register submodule '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sm_path'"]]})]]} ) ) ) ) ) ) (FunctionDef cmd_foreach [] (List (While (Com {[LIT_CHARS test]} {[VarSub #]} {[LIT_CHARS -ne]} {[LIT_CHARS 0]} ) (List (Case to_match={[DQ [VarSub 1]]}, pat_word_list=[[{[LIT_CHARS -q]}, {[LIT_CHARS --quiet]}], [{[LIT_CHARS --recursive]}], [{[LIT_CHARS -] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (= scope= flags=0 words=[] bindings=[('GIT_QUIET', {[LIT_CHARS 1]})]) (= scope= flags=0 words=[] bindings=[('recursive', {[LIT_CHARS 1]})]) (Com {[LIT_CHARS usage]} ) (Com {[LIT_CHARS break]} ) ) (Com {[LIT_CHARS shift]} ) ) ) (= scope= flags=0 words=[] bindings=[('toplevel', {[ComSub (Com {[LIT_CHARS pwd]})]})]) (Com {[LIT_CHARS exec]} < (DescriptorRedirectNode target={[LIT_CHARS 0]} 3), > ) (Pipeline (Com {[LIT_CHARS module_list]} ) (While (Com {[LIT_CHARS read]} {[LIT_CHARS mode]} {[LIT_CHARS sha1]} {[LIT_CHARS stage]} {[LIT_CHARS sm_path]} ) (List (Com {[LIT_CHARS die_if_unmatched]} {[DQ [VarSub mode]]} ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -e]} {[DQ [VarSub sm_path]] [LIT_CHARS /.git]} ) (List (Com {[LIT_CHARS say]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Entering '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS prefix][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sm_path'"]]})]]} ) (= scope= flags=0 words=[] bindings=[('name', {[ComSub (Com {[LIT_CHARS module_name]} {[DQ [VarSub sm_path]]})]})]) (AndOr OP_OR_IF (Subshell (List (= scope= flags=0 words=[] bindings=[('prefix', {[DQ [VarSub prefix][VarSub sm_path][LIT_CHARS /]]})]) (Com {[LIT_CHARS clear_local_git_env]} ) (= scope= flags=0 words=[] bindings=[('path', {[VarSub sm_path]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[DQ [VarSub sm_path]]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS eval]} {[DQ [VarSub @]]} ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub recursive]]} ) (Com {[LIT_CHARS cmd_foreach]} {[DQ [LIT_CHARS --recursive]]} {[DQ [VarSub @]]} ) ) ) ) ) ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Stopping at '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sm_path'; script returned non-zero status."]]})]]} ) ) ) ) ) ) ) ) ) (FunctionDef cmd_init [] (List (While (Com {[LIT_CHARS test]} {[VarSub #]} {[LIT_CHARS -ne]} {[LIT_CHARS 0]} ) (List (Case to_match={[DQ [VarSub 1]]}, pat_word_list=[[{[LIT_CHARS -q]}, {[LIT_CHARS --quiet]}], [{[LIT_CHARS --]}], [{[LIT_CHARS -] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (= scope= flags=0 words=[] bindings=[('GIT_QUIET', {[LIT_CHARS 1]})]) (List (Com {[LIT_CHARS shift]} ) (Com {[LIT_CHARS break]} ) ) (Com {[LIT_CHARS usage]} ) (Com {[LIT_CHARS break]} ) ) (Com {[LIT_CHARS shift]} ) ) ) (Pipeline (Com {[LIT_CHARS module_list]} {[DQ [VarSub @]]} ) (While (Com {[LIT_CHARS read]} {[LIT_CHARS mode]} {[LIT_CHARS sha1]} {[LIT_CHARS stage]} {[LIT_CHARS sm_path]} ) (List (Com {[LIT_CHARS die_if_unmatched]} {[DQ [VarSub mode]]} ) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('name', {[ComSub (Com {[LIT_CHARS module_name]} {[DQ [VarSub sm_path]]})]})]) (Com {[LIT_CHARS exit]} ) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[DQ [LIT_CHARS submodule.][VarSub name][LIT_CHARS .url]]})]]} ) (List (= scope= flags=0 words=[] bindings=[('url', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS -f]} {[LIT_CHARS .gitmodules]} {[LIT_CHARS submodule.] [DQ [VarSub name]] [LIT_CHARS .url]})]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub url]]} ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "No url found for submodule path '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sm_path' in .gitmodules"]]})]]} ) ) (Case to_match={[DQ [VarSub url]]}, pat_word_list=[[{[LIT_CHARS ./] [LIT_OTHER "*"]}, {[LIT_CHARS ../] [LIT_OTHER "*"]}]] (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('url', {[ComSub (Com {[LIT_CHARS resolve_relative_url]} {[DQ [VarSub url]]})]})]) (Com {[LIT_CHARS exit]} ) ) ) (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS submodule.] [DQ [VarSub name]] [LIT_CHARS .url]} {[DQ [VarSub url]]} ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Failed to register url for submodule path '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sm_path'"]]})]]} ) ) (Com {[LIT_CHARS say]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Submodule '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "name' ("][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "url) registered for path '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sm_path'"]]})]]} ) ) ) (= scope= flags=0 words=[] bindings=[('upd', {[DQ [ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS -f]} {[LIT_CHARS .gitmodules]} {[LIT_CHARS submodule.] [DQ [VarSub name]] [LIT_CHARS .update]})]]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub upd]]} ) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS submodule.] [DQ [VarSub name]] [LIT_CHARS .update]})]]} ) (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS submodule.] [DQ [VarSub name]] [LIT_CHARS .update]} {[DQ [VarSub upd]]} ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Failed to register update mode for submodule path '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sm_path'"]]})]]} ) ) ) ) ) ) ) ) ) (FunctionDef cmd_update [] (List (= scope= flags=0 words=[] bindings=[('orig_flags', {[SQ ]})]) (While (Com {[LIT_CHARS test]} {[VarSub #]} {[LIT_CHARS -ne]} {[LIT_CHARS 0]} ) (List (Case to_match={[DQ [VarSub 1]]}, pat_word_list=[[{[LIT_CHARS -q]}, {[LIT_CHARS --quiet]}], [{[LIT_CHARS -i]}, {[LIT_CHARS --init]}], [{[LIT_CHARS -N]}, {[LIT_CHARS --no-fetch]}], [{[LIT_CHARS -f]}, {[LIT_CHARS --force]}], [{[LIT_CHARS -r]}, {[LIT_CHARS --rebase]}], [{[LIT_CHARS --reference]}], [{[LIT_CHARS --reference] [LIT_DBRACKET_LIKE "="] [LIT_OTHER "*"]}], [{[LIT_CHARS -m]}, {[LIT_CHARS --merge]}], [{[LIT_CHARS --recursive]}], [{[LIT_CHARS --checkout]}], [{[LIT_CHARS --]}], [{[LIT_CHARS -] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (= scope= flags=0 words=[] bindings=[('GIT_QUIET', {[LIT_CHARS 1]})]) (= scope= flags=0 words=[] bindings=[('init', {[LIT_CHARS 1]})]) (= scope= flags=0 words=[] bindings=[('nofetch', {[LIT_CHARS 1]})]) (= scope= flags=0 words=[] bindings=[('force', {[VarSub 1]})]) (= scope= flags=0 words=[] bindings=[('update', {[DQ [LIT_CHARS rebase]]})]) (List (Case to_match={[DQ [VarSub 2]]}, pat_word_list=[[{[SQ ]}]] (Com {[LIT_CHARS usage]} ) ) (= scope= flags=0 words=[] bindings=[('reference', {[DQ [LIT_CHARS "--reference="][VarSub 2]]})]) (= scope= flags=0 words=[] bindings=[('orig_flags', {[DQ [VarSub orig_flags][LIT_CHARS " "][ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --sq-quote]} {[DQ [VarSub 1]]})]]})]) (Com {[LIT_CHARS shift]} ) ) (= scope= flags=0 words=[] bindings=[('reference', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('update', {[DQ [LIT_CHARS merge]]})]) (= scope= flags=0 words=[] bindings=[('recursive', {[LIT_CHARS 1]})]) (= scope= flags=0 words=[] bindings=[('update', {[DQ [LIT_CHARS checkout]]})]) (List (Com {[LIT_CHARS shift]} ) (Com {[LIT_CHARS break]} ) ) (Com {[LIT_CHARS usage]} ) (Com {[LIT_CHARS break]} ) ) (= scope= flags=0 words=[] bindings=[('orig_flags', {[DQ [VarSub orig_flags][LIT_CHARS " "][ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --sq-quote]} {[DQ [VarSub 1]]})]]})]) (Com {[LIT_CHARS shift]} ) ) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub init]]} ) (AndOr OP_OR_IF (Com {[LIT_CHARS cmd_init]} {[DQ [LIT_CHARS --]]} {[DQ [VarSub @]]} ) (Com {[LIT_CHARS return]} ) ) ) (= scope= flags=0 words=[] bindings=[('cloned_modules', {[SQ ]})]) (Pipeline (Com {[LIT_CHARS module_list]} {[DQ [VarSub @]]} ) (List (= scope= flags=0 words=[] bindings=[('err', {[SQ ]})]) (While (Com {[LIT_CHARS read]} {[LIT_CHARS mode]} {[LIT_CHARS sha1]} {[LIT_CHARS stage]} {[LIT_CHARS sm_path]} ) (List (Com {[LIT_CHARS die_if_unmatched]} {[DQ [VarSub mode]]} ) (If (Com {[LIT_CHARS test]} {[DQ [VarSub stage]]} {[LIT_DBRACKET_LIKE "="]} {[LIT_CHARS U]} ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Skipping unmerged submodule "][VarSub sm_path]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS continue]} ) ) ) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('name', {[ComSub (Com {[LIT_CHARS module_name]} {[DQ [VarSub sm_path]]})]})]) (Com {[LIT_CHARS exit]} ) ) (= scope= flags=0 words=[] bindings=[('url', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS submodule.] [DQ [VarSub name]] [LIT_CHARS .url]})]})]) (If (Pipeline! (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub update]]} ) ) (= scope= flags=0 words=[] bindings=[('update_module', {[VarSub update]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('update_module', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS submodule.] [DQ [VarSub name]] [LIT_CHARS .update]})]})]) ) (If (Com {[LIT_CHARS test]} {[DQ [VarSub update_module]]} {[LIT_DBRACKET_LIKE "="]} {[DQ [LIT_CHARS none]]} ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Skipping submodule '"][VarSub sm_path][LIT_CHARS "'"]]} ) (Com {[LIT_CHARS continue]} ) ) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub url]]} ) (List (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[DQ [VarSub #]]} {[LIT_NEQUAL "!="]} {[DQ [LIT_CHARS 0]]} ) (Com {[LIT_CHARS say]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Submodule path '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sm_path' not initialized\n"][LIT_CHARS "Maybe you want to use 'update --init'?"]]})]]} ) ) (Com {[LIT_CHARS continue]} ) ) ) (If (Pipeline! (Com {[LIT_CHARS test]} {[LIT_CHARS -d]} {[DQ [VarSub sm_path]] [LIT_CHARS /.git]} {[LIT_CHARS -o]} {[LIT_CHARS -f]} {[DQ [VarSub sm_path]] [LIT_CHARS /.git]} ) ) (List (AndOr OP_OR_IF (Com {[LIT_CHARS module_clone]} {[DQ [VarSub sm_path]]} {[DQ [VarSub url]]} {[DQ [VarSub reference]]} ) (Com {[LIT_CHARS exit]} ) ) (= scope= flags=0 words=[] bindings=[('cloned_modules', {[DQ [VarSub cloned_modules][LIT_CHARS ";"][VarSub name]]})]) (= scope= flags=0 words=[] bindings=[('subsha1', {[SQ ]})]) ) (ElseTrue) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('subsha1', {[ComSub (List (Com {[LIT_CHARS clear_local_git_env]}) (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[DQ [VarSub sm_path]]}) (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --verify]} {[LIT_CHARS HEAD]}) ) )]})]) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Unable to find current revision in submodule path '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sm_path'"]]})]]} ) ) ) (If (Com {[LIT_CHARS test]} {[DQ [VarSub subsha1]]} {[LIT_NEQUAL "!="]} {[DQ [VarSub sha1]]} {[LIT_CHARS -o]} {[LIT_CHARS -n]} {[DQ [VarSub force]]} ) (List (= scope= flags=0 words=[] bindings=[('subforce', {[VarSub force]})]) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub subsha1]]} {[LIT_CHARS -a]} {[LIT_CHARS -z]} {[DQ [VarSub force]]} ) (= scope= flags=0 words=[] bindings=[('subforce', {[DQ [LIT_CHARS -f]]})]) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub nofetch]]} ) (AndOr OP_OR_IF (Subshell (List (Com {[LIT_CHARS clear_local_git_env]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[DQ [VarSub sm_path]]} ) (Subshell (AndOr OP_OR_IF (Subshell (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('rev', {[ComSub (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS git]} {[LIT_CHARS rev-list]} {[LIT_CHARS -n]} {[LIT_CHARS 1]} {[VarSub sha1]} {[LIT_CHARS --not]} {[LIT_CHARS --all]})]})]) (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub rev]]} ) ) ) (Com {[LIT_CHARS git-fetch]} ) ) ) ) ) ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Unable to fetch in submodule path '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sm_path'"]]})]]} ) ) ) (Case to_match={[DQ [LIT_CHARS ";"][VarSub cloned_modules][LIT_CHARS ";"]]}, pat_word_list=[[{[LIT_OTHER "*"] [DQ [LIT_CHARS ";"][VarSub name][LIT_CHARS ";"]] [LIT_OTHER "*"]}]] (= scope= flags=0 words=[] bindings=[('update_module', {[SQ ]})]) ) (= scope= flags=0 words=[] bindings=[('must_die_on_failure', {[SQ ]})]) (Case to_match={[DQ [VarSub update_module]]}, pat_word_list=[[{[LIT_CHARS rebase]}], [{[LIT_CHARS merge]}], [{[LIT_OTHER "*"]}]] (List (= scope= flags=0 words=[] bindings=[('command', {[DQ [LIT_CHARS "git rebase"]]})]) (= scope= flags=0 words=[] bindings=[('die_msg', {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Unable to rebase '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sha1' in submodule path '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sm_path'"]]})]]})]) (= scope= flags=0 words=[] bindings=[('say_msg', {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Submodule path '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sm_path': rebased into '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sha1'"]]})]]})]) (= scope= flags=0 words=[] bindings=[('must_die_on_failure', {[LIT_CHARS yes]})]) ) (List (= scope= flags=0 words=[] bindings=[('command', {[DQ [LIT_CHARS "git merge"]]})]) (= scope= flags=0 words=[] bindings=[('die_msg', {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Unable to merge '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sha1' in submodule path '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sm_path'"]]})]]})]) (= scope= flags=0 words=[] bindings=[('say_msg', {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Submodule path '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sm_path': merged in '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sha1'"]]})]]})]) (= scope= flags=0 words=[] bindings=[('must_die_on_failure', {[LIT_CHARS yes]})]) ) (List (= scope= flags=0 words=[] bindings=[('command', {[DQ [LIT_CHARS "git checkout "][VarSub subforce][LIT_CHARS " -q"]]})]) (= scope= flags=0 words=[] bindings=[('die_msg', {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Unable to checkout '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sha1' in submodule path '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sm_path'"]]})]]})]) (= scope= flags=0 words=[] bindings=[('say_msg', {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Submodule path '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sm_path': checked out '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sha1'"]]})]]})]) ) ) (If (Subshell (List (Com {[LIT_CHARS clear_local_git_env]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[DQ [VarSub sm_path]]} ) (Com {[VarSub command]} {[DQ [VarSub sha1]]} ) ) ) ) (Com {[LIT_CHARS say]} {[DQ [VarSub say_msg]]} ) (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub must_die_on_failure]]} ) (Com {[LIT_CHARS die_with_status]} {[LIT_CHARS 2]} {[DQ [VarSub die_msg]]} ) (ElseTrue) (List (= scope= flags=0 words=[] bindings=[('err', {[DQ [VarSub err][LIT_CHARS ";"][VarSub die_msg]]})]) (Com {[LIT_CHARS continue]} ) ) ) ) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub recursive]]} ) (List (Subshell (List (Com {[LIT_CHARS clear_local_git_env]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[DQ [VarSub sm_path]]} ) (Com {[LIT_CHARS eval]} {[LIT_CHARS cmd_update]} {[DQ [VarSub orig_flags]]} ) ) ) ) (= scope= flags=0 words=[] bindings=[('res', {[VarSub ?]})]) (If (Com {[LIT_CHARS test]} {[VarSub res]} {[LIT_CHARS -gt]} {[LIT_CHARS 0]} ) (List (= scope= flags=0 words=[] bindings=[('die_msg', {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Failed to recurse into submodule path '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sm_path'"]]})]]})]) (If (Com {[LIT_CHARS test]} {[VarSub res]} {[LIT_CHARS -eq]} {[LIT_CHARS 1]} ) (List (= scope= flags=0 words=[] bindings=[('err', {[DQ [VarSub err][LIT_CHARS ";"][VarSub die_msg]]})]) (Com {[LIT_CHARS continue]} ) ) (ElseTrue) (Com {[LIT_CHARS die_with_status]} {[VarSub res]} {[DQ [VarSub die_msg]]} ) ) ) ) ) ) ) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub err]]} ) (List (= scope= flags=0 words=[] bindings=[('OIFS', {[VarSub IFS]})]) (= scope= flags=0 words=[] bindings=[('IFS', {[SQ ]})]) (For e [{[VarSub err]}]) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub e]]} ) (Com {[LIT_CHARS echo]} {[DQ [VarSub e]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) ) ) (= scope= flags=0 words=[] bindings=[('IFS', {[VarSub OIFS]})]) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) ) ) ) ) ) (FunctionDef set_name_rev [] (List (= scope= flags=0 words=[] bindings=[('revname', {[ComSub (Subshell (List (Com {[LIT_CHARS clear_local_git_env]}) (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[DQ [VarSub 1]]}) (AndOr OP_OR_IF (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS git]} {[LIT_CHARS describe]} {[DQ [VarSub 2]]}) (AndOr OP_OR_IF (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS git]} {[LIT_CHARS describe]} {[LIT_CHARS --tags]} {[DQ [VarSub 2]]}) (AndOr OP_OR_IF (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS git]} {[LIT_CHARS describe]} {[LIT_CHARS --contains]} {[DQ [VarSub 2]]}) (Com {[LIT_CHARS git]} {[LIT_CHARS describe]} {[LIT_CHARS --all]} {[LIT_CHARS --always]} {[DQ [VarSub 2]]}) ) ) ) ) ) )]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub revname]]} ) (= scope= flags=0 words=[] bindings=[('revname', {[DQ [LIT_CHARS " ("][VarSub revname][LIT_CHARS ")"]]})]) ) ) ) (FunctionDef cmd_summary [] (List (= scope= flags=0 words=[] bindings=[('summary_limit', {[LIT_CHARS -1]})]) (= scope= flags=0 words=[] bindings=[('for_status', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('diff_cmd', {[LIT_CHARS diff-index]})]) (While (Com {[LIT_CHARS test]} {[VarSub #]} {[LIT_CHARS -ne]} {[LIT_CHARS 0]} ) (List (Case to_match={[DQ [VarSub 1]]}, pat_word_list=[[{[LIT_CHARS --cached]}], [{[LIT_CHARS --files]}], [{[LIT_CHARS --for-status]}], [{[LIT_CHARS -n]}, {[LIT_CHARS --summary-limit]}], [{[LIT_CHARS --]}], [{[LIT_CHARS -] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (= scope= flags=0 words=[] bindings=[('cached', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('files', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('for_status', {[DQ [VarSub 1]]})]) (List (If (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('summary_limit', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub 2]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}}}]})]) (Com {[LIT_CHARS test]} {[DQ [VarSub summary_limit]]} {[LIT_DBRACKET_LIKE "="]} {[DQ [VarSub 2]]} ) ) (Com {[LIT_OTHER ":"]} ) (ElseTrue) (Com {[LIT_CHARS usage]} ) ) (Com {[LIT_CHARS shift]} ) ) (List (Com {[LIT_CHARS shift]} ) (Com {[LIT_CHARS break]} ) ) (Com {[LIT_CHARS usage]} ) (Com {[LIT_CHARS break]} ) ) (Com {[LIT_CHARS shift]} ) ) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[VarSub summary_limit]} {[LIT_DBRACKET_LIKE "="]} {[LIT_CHARS 0]} ) (Com {[LIT_CHARS return]} ) ) (If (= scope= flags=0 words=[] bindings=[('rev', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS -q]} {[LIT_CHARS --verify]} {[LIT_CHARS --default]} {[LIT_CHARS HEAD]} {[VarSub 1 test_op=VS_TEST_PLUS {[DQ [VarSub 1]]}]})]})]) (List (= scope= flags=0 words=[] bindings=[('head', {[VarSub rev]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[VarSub #]} {[LIT_DBRACKET_LIKE "="]} {[LIT_CHARS 0]} ) (Com {[LIT_CHARS shift]} ) ) ) (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub 1]]} {[LIT_CHARS -o]} {[DQ [VarSub 1]]} {[LIT_DBRACKET_LIKE "="]} {[DQ [LIT_CHARS HEAD]]} ) (List (= scope= flags=0 words=[] bindings=[('head', {[ComSub (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} 0)]{[LIT_CHARS git]} {[LIT_CHARS hash-object]} {[LIT_CHARS -w]} {[LIT_CHARS -t]} {[LIT_CHARS tree]} {[LIT_CHARS --stdin]})]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub 1]]} ) (Com {[LIT_CHARS shift]} ) ) ) (ElseTrue) (= scope= flags=0 words=[] bindings=[('head', {[DQ [LIT_CHARS HEAD]]})]) ) (If (Com {[LIT_DBRACKET_LIKE "["]} {[LIT_CHARS -n]} {[DQ [VarSub files]]} {[LIT_DBRACKET_LIKE "]"]} ) (List (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub cached]]} ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "The --cached option cannot be used with the --files option"]]})]]} ) ) (= scope= flags=0 words=[] bindings=[('diff_cmd', {[LIT_CHARS diff-files]})]) (= scope= flags=0 words=[] bindings=[('head', {[SQ ]})]) ) ) (Com {[LIT_CHARS cd_to_toplevel]} ) (= scope= flags=0 words=[] bindings=[('modules', {[ComSub (Pipeline (Com {[LIT_CHARS git]} {[VarSub diff_cmd]} {[VarSub cached]} {[LIT_CHARS --ignore-submodules] [LIT_DBRACKET_LIKE "="] [LIT_CHARS dirty]} {[LIT_CHARS --raw]} {[VarSub head]} {[LIT_CHARS --]} {[DQ [VarSub @]]}) (Com {[LIT_CHARS sane_egrep]} {[SQ ]}) (While (Com {[LIT_CHARS read]} {[LIT_CHARS mod_src]} {[LIT_CHARS mod_dst]} {[LIT_CHARS sha1_src]} {[LIT_CHARS sha1_dst]} {[LIT_CHARS status]} {[LIT_CHARS name]}) (List (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[VarSub status]} {[LIT_DBRACKET_LIKE "="]} {[LIT_CHARS D]} {[LIT_CHARS -o]} {[VarSub status]} {[LIT_DBRACKET_LIKE "="]} {[LIT_CHARS T]}) (AndOr OP_AND_IF (Com {[LIT_CHARS echo]} {[DQ [VarSub name]]}) (Com {[LIT_CHARS continue]}) ) ) (AndOr OP_AND_IF (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1) (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2)]more_env=[('GIT_DIR', {[DQ [VarSub name][LIT_CHARS /.git]]})] {[LIT_CHARS git-rev-parse]} {[LIT_CHARS --git-dir]}) (Com {[LIT_CHARS echo]} {[DQ [VarSub name]]}) ) ) ) )]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub modules]]} ) (Com {[LIT_CHARS return]} ) ) (Pipeline (Com {[LIT_CHARS git]} {[VarSub diff_cmd]} {[VarSub cached]} {[LIT_CHARS --ignore-submodules] [LIT_DBRACKET_LIKE "="] [LIT_CHARS dirty]} {[LIT_CHARS --raw]} {[VarSub head]} {[LIT_CHARS --]} {[VarSub modules]} ) (Com {[LIT_CHARS sane_egrep]} {[SQ ]} ) (Com {[LIT_CHARS cut]} {[LIT_CHARS -c2-]} ) (While (Com {[LIT_CHARS read]} {[LIT_CHARS mod_src]} {[LIT_CHARS mod_dst]} {[LIT_CHARS sha1_src]} {[LIT_CHARS sha1_dst]} {[LIT_CHARS status]} {[LIT_CHARS name]} ) (List (If (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub cached]]} ) (Com {[LIT_CHARS test]} {[VarSub sha1_dst]} {[LIT_DBRACKET_LIKE "="]} {[LIT_CHARS 0000000000000000000000000000000000000000]} ) ) (Case to_match={[DQ [VarSub mod_dst]]}, pat_word_list=[[{[LIT_CHARS 160000]}], [{[LIT_CHARS 100644]}, {[LIT_CHARS 100755]}, {[LIT_CHARS 120000]}], [{[LIT_CHARS 000000]}], [{[LIT_OTHER "*"]}]] (= scope= flags=0 words=[] bindings=[('sha1_dst', {[ComSub (Com more_env=[('GIT_DIR', {[DQ [VarSub name][LIT_CHARS /.git]]})] {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS HEAD]})]})]) (= scope= flags=0 words=[] bindings=[('sha1_dst', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS hash-object]} {[VarSub name]})]})]) (ElseTrue) (List (Com {[LIT_CHARS eval_gettextln]} {[DQ [LIT_CHARS "unexpected mode "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS mod_dst]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS continue]} ) ) ) ) (= scope= flags=0 words=[] bindings=[('missing_src', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('missing_dst', {[SQ ]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[VarSub mod_src]} {[LIT_DBRACKET_LIKE "="]} {[LIT_CHARS 160000]} ) (AndOr OP_AND_IF (Pipeline! (Com {[LIT_CHARS git-rev-parse]} {[LIT_CHARS -q]} {[LIT_CHARS --verify]} {[VarSub sha1_src] [LIT_OTHER "^"] [LIT_CHARS 0]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > more_env=[('GIT_DIR', {[DQ [VarSub name][LIT_CHARS /.git]]})] ) ) (= scope= flags=0 words=[] bindings=[('missing_src', {[LIT_CHARS t]})]) ) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[VarSub mod_dst]} {[LIT_DBRACKET_LIKE "="]} {[LIT_CHARS 160000]} ) (AndOr OP_AND_IF (Pipeline! (Com {[LIT_CHARS git-rev-parse]} {[LIT_CHARS -q]} {[LIT_CHARS --verify]} {[VarSub sha1_dst] [LIT_OTHER "^"] [LIT_CHARS 0]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > more_env=[('GIT_DIR', {[DQ [VarSub name][LIT_CHARS /.git]]})] ) ) (= scope= flags=0 words=[] bindings=[('missing_dst', {[LIT_CHARS t]})]) ) ) (= scope= flags=0 words=[] bindings=[('total_commits', {[SQ ]})]) (Case to_match={[DQ [VarSub missing_src][LIT_CHARS ","][VarSub missing_dst]]}, pat_word_list=[[{[LIT_CHARS t] [LIT_COMMA ","]}], [{[LIT_COMMA ","] [LIT_CHARS t]}], [{[LIT_CHARS t] [LIT_COMMA ","] [LIT_CHARS t]}], [{[LIT_OTHER "*"]}]] (= scope= flags=0 words=[] bindings=[('errmsg', {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS " Warn: "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "name doesn't contain commit "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS sha1_src]]})]]})]) (= scope= flags=0 words=[] bindings=[('errmsg', {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS " Warn: "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "name doesn't contain commit "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS sha1_dst]]})]]})]) (= scope= flags=0 words=[] bindings=[('errmsg', {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS " Warn: "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "name doesn't contain commits "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sha1_src and "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS sha1_dst]]})]]})]) (List (= scope= flags=0 words=[] bindings=[('errmsg', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('total_commits', {[ComSub (List (If (Com {[LIT_CHARS test]} {[VarSub mod_src]} {[LIT_DBRACKET_LIKE "="]} {[LIT_CHARS 160000]} {[LIT_CHARS -a]} {[VarSub mod_dst]} {[LIT_DBRACKET_LIKE "="]} {[LIT_CHARS 160000]}) (= scope= flags=0 words=[] bindings=[('range', {[DQ [VarSub sha1_src][LIT_CHARS ...][VarSub sha1_dst]]})]) (Com {[LIT_CHARS test]} {[VarSub mod_src]} {[LIT_DBRACKET_LIKE "="]} {[LIT_CHARS 160000]}) (= scope= flags=0 words=[] bindings=[('range', {[VarSub sha1_src]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('range', {[VarSub sha1_dst]})]) ) (Pipeline (Com more_env=[('GIT_DIR', {[DQ [VarSub name][LIT_CHARS /.git]]})] {[LIT_CHARS git]} {[LIT_CHARS rev-list]} {[LIT_CHARS --first-parent]} {[VarSub range]} {[LIT_CHARS --]}) (Com {[LIT_CHARS wc]} {[LIT_CHARS -l]}) ) )]})]) (= scope= flags=0 words=[] bindings=[('total_commits', {[DQ [LIT_CHARS " ("][ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub total_commits]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}}}][LIT_CHARS ")"]]})]) ) ) (= scope= flags=0 words=[] bindings=[('sha1_abbr_src', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[VarSub sha1_src]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -c1-7]}) )]})]) (= scope= flags=0 words=[] bindings=[('sha1_abbr_dst', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[VarSub sha1_dst]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -c1-7]}) )]})]) (If (Com {[LIT_CHARS test]} {[VarSub status]} {[LIT_DBRACKET_LIKE "="]} {[LIT_CHARS T]} ) (List (= scope= flags=0 words=[] bindings=[('blob', {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS blob]]})]]})]) (= scope= flags=0 words=[] bindings=[('submodule', {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS submodule]]})]]})]) (If (Com {[LIT_CHARS test]} {[VarSub mod_dst]} {[LIT_DBRACKET_LIKE "="]} {[LIT_CHARS 160000]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "* "][VarSub name][LIT_CHARS " "][VarSub sha1_abbr_src][LIT_CHARS "("][VarSub blob][LIT_CHARS ")->"][VarSub sha1_abbr_dst][LIT_CHARS "("][VarSub submodule][LIT_CHARS ")"][VarSub total_commits][LIT_CHARS ":"]]} ) (ElseTrue) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "* "][VarSub name][LIT_CHARS " "][VarSub sha1_abbr_src][LIT_CHARS "("][VarSub submodule][LIT_CHARS ")->"][VarSub sha1_abbr_dst][LIT_CHARS "("][VarSub blob][LIT_CHARS ")"][VarSub total_commits][LIT_CHARS ":"]]} ) ) ) (ElseTrue) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "* "][VarSub name][LIT_CHARS " "][VarSub sha1_abbr_src][LIT_CHARS ...][VarSub sha1_abbr_dst][VarSub total_commits][LIT_CHARS ":"]]} ) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub errmsg]]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[VarSub mod_dst]} {[LIT_DBRACKET_LIKE "="]} {[LIT_CHARS 160000]} ) (Com {[LIT_CHARS echo]} {[DQ [VarSub errmsg]]} ) ) (ElseTrue) (List (If (Com {[LIT_CHARS test]} {[VarSub mod_src]} {[LIT_DBRACKET_LIKE "="]} {[LIT_CHARS 160000]} {[LIT_CHARS -a]} {[VarSub mod_dst]} {[LIT_DBRACKET_LIKE "="]} {[LIT_CHARS 160000]} ) (List (= scope= flags=0 words=[] bindings=[('limit', {[SQ ]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[VarSub summary_limit]} {[LIT_CHARS -gt]} {[LIT_CHARS 0]} ) (= scope= flags=0 words=[] bindings=[('limit', {[DQ [LIT_CHARS -][VarSub summary_limit]]})]) ) (Com {[LIT_CHARS git]} {[LIT_CHARS log]} {[VarSub limit]} {[LIT_CHARS --pretty] [LIT_DBRACKET_LIKE "="] [SQ ]} {[LIT_CHARS --first-parent]} {[VarSub sha1_src] [LIT_CHARS ...] [VarSub sha1_dst]} more_env=[('GIT_DIR', {[DQ [VarSub name][LIT_CHARS /.git]]})] ) ) (Com {[LIT_CHARS test]} {[VarSub mod_dst]} {[LIT_DBRACKET_LIKE "="]} {[LIT_CHARS 160000]} ) (Com {[LIT_CHARS git]} {[LIT_CHARS log]} {[LIT_CHARS --pretty] [LIT_DBRACKET_LIKE "="] [SQ %s">]} {[LIT_CHARS -1]} {[VarSub sha1_dst]} more_env=[('GIT_DIR', {[DQ [VarSub name][LIT_CHARS /.git]]})] ) (ElseTrue) (Com {[LIT_CHARS git]} {[LIT_CHARS log]} {[LIT_CHARS --pretty] [LIT_DBRACKET_LIKE "="] [SQ ]} {[LIT_CHARS -1]} {[VarSub sha1_src]} more_env=[('GIT_DIR', {[DQ [VarSub name][LIT_CHARS /.git]]})] ) ) (Com {[LIT_CHARS echo]} ) ) ) (Com {[LIT_CHARS echo]} ) ) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub for_status]]} ) (List (If (Com {[LIT_DBRACKET_LIKE "["]} {[LIT_CHARS -n]} {[DQ [VarSub files]]} {[LIT_DBRACKET_LIKE "]"]} ) (Com {[LIT_CHARS gettextln]} {[DQ [LIT_CHARS "# Submodules changed but not updated:"]]} ) (ElseTrue) (Com {[LIT_CHARS gettextln]} {[DQ [LIT_CHARS "# Submodule changes to be committed:"]]} ) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "#"]]} ) (Com {[LIT_CHARS sed]} {[LIT_CHARS -e]} {[SQ ]} {[LIT_CHARS -e]} {[SQ ]} ) ) (ElseTrue) (Com {[LIT_CHARS cat]} ) ) ) ) ) (FunctionDef cmd_status [] (List (= scope= flags=0 words=[] bindings=[('orig_flags', {[SQ ]})]) (While (Com {[LIT_CHARS test]} {[VarSub #]} {[LIT_CHARS -ne]} {[LIT_CHARS 0]} ) (List (Case to_match={[DQ [VarSub 1]]}, pat_word_list=[[{[LIT_CHARS -q]}, {[LIT_CHARS --quiet]}], [{[LIT_CHARS --cached]}], [{[LIT_CHARS --recursive]}], [{[LIT_CHARS --]}], [{[LIT_CHARS -] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (= scope= flags=0 words=[] bindings=[('GIT_QUIET', {[LIT_CHARS 1]})]) (= scope= flags=0 words=[] bindings=[('cached', {[LIT_CHARS 1]})]) (= scope= flags=0 words=[] bindings=[('recursive', {[LIT_CHARS 1]})]) (List (Com {[LIT_CHARS shift]} ) (Com {[LIT_CHARS break]} ) ) (Com {[LIT_CHARS usage]} ) (Com {[LIT_CHARS break]} ) ) (= scope= flags=0 words=[] bindings=[('orig_flags', {[DQ [VarSub orig_flags][LIT_CHARS " "][ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --sq-quote]} {[DQ [VarSub 1]]})]]})]) (Com {[LIT_CHARS shift]} ) ) ) (Pipeline (Com {[LIT_CHARS module_list]} {[DQ [VarSub @]]} ) (While (Com {[LIT_CHARS read]} {[LIT_CHARS mode]} {[LIT_CHARS sha1]} {[LIT_CHARS stage]} {[LIT_CHARS sm_path]} ) (List (Com {[LIT_CHARS die_if_unmatched]} {[DQ [VarSub mode]]} ) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('name', {[ComSub (Com {[LIT_CHARS module_name]} {[DQ [VarSub sm_path]]})]})]) (Com {[LIT_CHARS exit]} ) ) (= scope= flags=0 words=[] bindings=[('url', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS submodule.] [DQ [VarSub name]] [LIT_CHARS .url]})]})]) (= scope= flags=0 words=[] bindings=[('displaypath', {[DQ [VarSub prefix][VarSub sm_path]]})]) (If (Com {[LIT_CHARS test]} {[DQ [VarSub stage]]} {[LIT_DBRACKET_LIKE "="]} {[LIT_CHARS U]} ) (List (Com {[LIT_CHARS say]} {[DQ [LIT_CHARS U][VarSub sha1][LIT_CHARS " "][VarSub displaypath]]} ) (Com {[LIT_CHARS continue]} ) ) ) (If (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub url]]} ) (Pipeline! (Com {[LIT_CHARS test]} {[LIT_CHARS -d]} {[DQ [VarSub sm_path]] [LIT_CHARS /.git]} {[LIT_CHARS -o]} {[LIT_CHARS -f]} {[DQ [VarSub sm_path]] [LIT_CHARS /.git]} ) ) ) (List (Com {[LIT_CHARS say]} {[DQ [LIT_CHARS -][VarSub sha1][LIT_CHARS " "][VarSub displaypath]]} ) (Com {[LIT_CHARS continue]} ) ) ) (Com {[LIT_CHARS set_name_rev]} {[DQ [VarSub sm_path]]} {[DQ [VarSub sha1]]} ) (If (Com {[LIT_CHARS git]} {[LIT_CHARS diff-files]} {[LIT_CHARS --ignore-submodules] [LIT_DBRACKET_LIKE "="] [LIT_CHARS dirty]} {[LIT_CHARS --quiet]} {[LIT_CHARS --]} {[DQ [VarSub sm_path]]} ) (Com {[LIT_CHARS say]} {[DQ [LIT_CHARS " "][VarSub sha1][LIT_CHARS " "][VarSub displaypath][VarSub revname]]} ) (ElseTrue) (List (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub cached]]} ) (List (= scope= flags=0 words=[] bindings=[('sha1', {[ComSub (List (Com {[LIT_CHARS clear_local_git_env]}) (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[DQ [VarSub sm_path]]}) (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --verify]} {[LIT_CHARS HEAD]}) ) )]})]) (Com {[LIT_CHARS set_name_rev]} {[DQ [VarSub sm_path]]} {[DQ [VarSub sha1]]} ) ) ) (Com {[LIT_CHARS say]} {[DQ [LIT_CHARS "+"][VarSub sha1][LIT_CHARS " "][VarSub displaypath][VarSub revname]]} ) ) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub recursive]]} ) (AndOr OP_OR_IF (Subshell (List (= scope= flags=0 words=[] bindings=[('prefix', {[DQ [VarSub displaypath][LIT_CHARS /]]})]) (Com {[LIT_CHARS clear_local_git_env]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[DQ [VarSub sm_path]]} ) (Com {[LIT_CHARS eval]} {[LIT_CHARS cmd_status]} {[DQ [VarSub orig_args]]} ) ) ) ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Failed to recurse into submodule path '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sm_path'"]]})]]} ) ) ) ) ) ) ) ) (FunctionDef cmd_sync [] (List (While (Com {[LIT_CHARS test]} {[VarSub #]} {[LIT_CHARS -ne]} {[LIT_CHARS 0]} ) (Case to_match={[DQ [VarSub 1]]}, pat_word_list=[[{[LIT_CHARS -q]}, {[LIT_CHARS --quiet]}], [{[LIT_CHARS --]}], [{[LIT_CHARS -] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (List (= scope= flags=0 words=[] bindings=[('GIT_QUIET', {[LIT_CHARS 1]})]) (Com {[LIT_CHARS shift]} ) ) (List (Com {[LIT_CHARS shift]} ) (Com {[LIT_CHARS break]} ) ) (Com {[LIT_CHARS usage]} ) (Com {[LIT_CHARS break]} ) ) ) (Com {[LIT_CHARS cd_to_toplevel]} ) (Pipeline (Com {[LIT_CHARS module_list]} {[DQ [VarSub @]]} ) (While (Com {[LIT_CHARS read]} {[LIT_CHARS mode]} {[LIT_CHARS sha1]} {[LIT_CHARS stage]} {[LIT_CHARS sm_path]} ) (List (Com {[LIT_CHARS die_if_unmatched]} {[DQ [VarSub mode]]} ) (= scope= flags=0 words=[] bindings=[('name', {[ComSub (Com {[LIT_CHARS module_name]} {[DQ [VarSub sm_path]]})]})]) (= scope= flags=0 words=[] bindings=[('url', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS -f]} {[LIT_CHARS .gitmodules]} {[LIT_CHARS --get]} {[LIT_CHARS submodule.] [DQ [VarSub name]] [LIT_CHARS .url]})]})]) (Case to_match={[DQ [VarSub url]]}, pat_word_list=[[{[LIT_CHARS ./] [LIT_OTHER "*"]}, {[LIT_CHARS ../] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('up_path', {[DQ [ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub sm_path]]}) (Com {[LIT_CHARS sed]} {[DQ [LIT_CHARS "s/[^/][^/]*/../g"]]}) )]]})]) (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('up_path', {[VarSub up_path transform_ops=[VS_UNARY_PERCENT {[LIT_SLASH /]}]] [LIT_CHARS /]})]) (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('sub_origin_url', {[ComSub (Com {[LIT_CHARS resolve_relative_url]} {[DQ [VarSub url]]} {[DQ [VarSub up_path]]})]})]) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('super_config_url', {[ComSub (Com {[LIT_CHARS resolve_relative_url]} {[DQ [VarSub url]]})]})]) (Com {[LIT_CHARS exit]} ) ) ) ) ) (List (= scope= flags=0 words=[] bindings=[('sub_origin_url', {[DQ [VarSub url]]})]) (= scope= flags=0 words=[] bindings=[('super_config_url', {[DQ [VarSub url]]})]) ) ) (If (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[DQ [LIT_CHARS submodule.][VarSub name][LIT_CHARS .url]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (List (Com {[LIT_CHARS say]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Synchronizing submodule url for '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "name'"]]})]]} ) (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS submodule.] [DQ [VarSub name]] [LIT_CHARS .url]} {[DQ [VarSub super_config_url]]} ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -e]} {[DQ [VarSub sm_path]] [LIT_CHARS /.git]} ) (Subshell (List (Com {[LIT_CHARS clear_local_git_env]} ) (Com {[LIT_CHARS cd]} {[DQ [VarSub sm_path]]} ) (= scope= flags=0 words=[] bindings=[('remote', {[ComSub (Com {[LIT_CHARS get_default_remote]})]})]) (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS remote.] [DQ [VarSub remote]] [LIT_CHARS .url]} {[DQ [VarSub sub_origin_url]]} ) ) ) ) ) ) ) ) ) ) ) (While (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[VarSub #]} {[LIT_NEQUAL "!="]} {[LIT_CHARS 0]} ) (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub command]]} ) ) (List (Case to_match={[DQ [VarSub 1]]}, pat_word_list=[[{[LIT_CHARS add]}, {[LIT_CHARS foreach]}, {[LIT_CHARS init]}, {[LIT_CHARS update]}, {[LIT_CHARS status]}, {[LIT_CHARS summary]}, {[LIT_CHARS sync]}], [{[LIT_CHARS -q]}, {[LIT_CHARS --quiet]}], [{[LIT_CHARS -b]}, {[LIT_CHARS --branch]}], [{[LIT_CHARS --cached]}], [{[LIT_CHARS --]}], [{[LIT_CHARS -] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (= scope= flags=0 words=[] bindings=[('command', {[VarSub 1]})]) (= scope= flags=0 words=[] bindings=[('GIT_QUIET', {[LIT_CHARS 1]})]) (List (Case to_match={[DQ [VarSub 2]]}, pat_word_list=[[{[SQ ]}]] (Com {[LIT_CHARS usage]} ) ) (= scope= flags=0 words=[] bindings=[('branch', {[DQ [VarSub 2]]})]) (Com {[LIT_CHARS shift]} ) ) (= scope= flags=0 words=[] bindings=[('cached', {[DQ [VarSub 1]]})]) (Com {[LIT_CHARS break]} ) (Com {[LIT_CHARS usage]} ) (Com {[LIT_CHARS break]} ) ) (Com {[LIT_CHARS shift]} ) ) ) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub command]]} ) (= scope= flags=0 words=[] bindings=[('command', {[LIT_CHARS status]})]) ) (If (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub branch]]} ) (Com {[LIT_CHARS test]} {[DQ [VarSub command]]} {[LIT_NEQUAL "!="]} {[LIT_CHARS add]} ) ) (Com {[LIT_CHARS usage]} ) ) (If (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub cached]]} ) (Com {[LIT_CHARS test]} {[DQ [VarSub command]]} {[LIT_NEQUAL "!="]} {[LIT_CHARS status]} {[LIT_CHARS -a]} {[DQ [VarSub command]]} {[LIT_NEQUAL "!="]} {[LIT_CHARS summary]} ) ) (Com {[LIT_CHARS usage]} ) ) (Com {[DQ [LIT_CHARS cmd_][VarSub command]]} {[DQ [VarSub @]]} ) )