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 ] [-f|--force] [--name ] [--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] deinit [-f|--force] (--all| [--] ...)\n"][LIT_CHARS " or: "][VarSub dashless][LIT_CHARS " [--quiet] update [--init] [--remote] [-N|--no-fetch] [-f|--force] [--checkout|--merge|--rebase] [--[no-]recommend-shallow] [--reference ] [--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 [--recursive] [--] [...]"]]})]) (= scope= flags=0 words=[] bindings=[('OPTIONS_SPEC', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('SUBDIRECTORY_OK', {[LIT_CHARS Yes]})]) (Com {[LIT_CHARS .]} {[LIT_CHARS git-sh-setup]}) (Com {[LIT_CHARS .]} {[LIT_CHARS git-parse-remote]}) (Com {[LIT_CHARS require_work_tree]}) (= scope= flags=0 words=[] bindings=[('wt_prefix', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --show-prefix]})]})]) (Com {[LIT_CHARS cd_to_toplevel]}) (Com {[LIT_OTHER ":"]} {[VarSub GIT_ALLOW_PROTOCOL test_op=VS_TEST_EQUALS {[LIT_CHARS "file:git:http:https:ssh"]}]}) (= scope= flags=1 words=[{[LIT_CHARS GIT_ALLOW_PROTOCOL]}] bindings=[]) (= 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=[('remote', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('nofetch', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('update', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('prefix', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('custom_name', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('depth', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('progress', {[SQ ]})]) (FunctionDef die_if_unmatched [] (If (Com {[LIT_CHARS test]} {[DQ [VarSub 1]]} {[LIT_OTHER "="]} {[DQ [LIT_CHARS "#unmatched"]]}) (Com {[LIT_CHARS exit]} {[VarSub 2 test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS 1]}]}) ) ) (FunctionDef get_submodule_config [] (List (= scope= flags=0 words=[] bindings=[('name', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('option', {[DQ [VarSub 2]]})]) (= scope= flags=0 words=[] bindings=[('default', {[DQ [VarSub 3]]})]) (= scope= flags=0 words=[] bindings=[('value', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS submodule.] [DQ [VarSub name]] [LIT_CHARS .] [DQ [VarSub option]]})]})]) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub value]]}) (= scope= flags=0 words=[] bindings=[('value', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS -f]} {[LIT_CHARS .gitmodules]} {[LIT_CHARS submodule.] [DQ [VarSub name]] [LIT_CHARS .] [DQ [VarSub option]]})]})]) ) (Com {[LIT_CHARS printf]} {[SQ ]} {[DQ [VarSub value test_op=VS_TEST_COLON_HYPHEN {[VarSub default]}]]}) ) ) (FunctionDef isnumber [] (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('n', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub 1]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}}}]})]) (Com {[LIT_CHARS test]} {[DQ [VarSub n]]} {[LIT_OTHER "="]} {[DQ [VarSub 1]]}) ) ) (FunctionDef sanitize_submodule_env [] (List (= scope= flags=0 words=[] bindings=[('save_config', {[VarSub GIT_CONFIG_PARAMETERS]})]) (Com {[LIT_CHARS clear_local_git_env]}) (= scope= flags=0 words=[] bindings=[('GIT_CONFIG_PARAMETERS', {[VarSub save_config]})]) (= scope= flags=1 words=[{[LIT_CHARS GIT_CONFIG_PARAMETERS]}] bindings=[]) ) ) (FunctionDef cmd_add [] (List (= scope= flags=0 words=[] bindings=[('reference_path', {[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 -b]}, {[LIT_CHARS --branch]}], [{[LIT_CHARS -f]}, {[LIT_CHARS --force]}], [{[LIT_CHARS -q]}, {[LIT_CHARS --quiet]}], [{[LIT_CHARS --reference]}], [{[LIT_CHARS --reference] [LIT_OTHER "="] [LIT_OTHER "*"]}], [{[LIT_CHARS --name]}], [{[LIT_CHARS --depth]}], [{[LIT_CHARS --depth] [LIT_OTHER "="] [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_path', {[VarSub 2]})]) (Com {[LIT_CHARS shift]}) ) (= scope= flags=0 words=[] bindings=[('reference_path', {[DQ [VarSub 1 transform_ops=[VS_UNARY_POUND {[LIT_CHARS "--reference="]}]]]})]) (List (Case to_match={[DQ [VarSub 2]]}, pat_word_list=[[{[SQ ]}]] (Com {[LIT_CHARS usage]}) ) (= scope= flags=0 words=[] bindings=[('custom_name', {[VarSub 2]})]) (Com {[LIT_CHARS shift]}) ) (List (Case to_match={[DQ [VarSub 2]]}, pat_word_list=[[{[SQ ]}]] (Com {[LIT_CHARS usage]}) ) (= scope= flags=0 words=[] bindings=[('depth', {[DQ [LIT_CHARS "--depth="][VarSub 2]]})]) (Com {[LIT_CHARS shift]}) ) (= scope= flags=0 words=[] bindings=[('depth', {[VarSub 1]})]) (List (Com {[LIT_CHARS shift]}) (Com {[LIT_CHARS break]}) ) (Com {[LIT_CHARS usage]}) (Com {[LIT_CHARS break]}) ) (Com {[LIT_CHARS shift]}) ) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub reference_path]]}) (List (AndOr OP_OR_IF (Com {[LIT_CHARS is_absolute_path]} {[DQ [VarSub reference_path]]}) (= scope= flags=0 words=[] bindings=[('reference_path', {[DQ [VarSub wt_prefix][VarSub reference_path]]})]) ) (= scope= flags=0 words=[] bindings=[('reference', {[DQ [LIT_CHARS "--reference="][VarSub reference_path]]})]) ) ) (= 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 printf]} {[SQ ]} {[DQ [VarSub repo]]}) (Com {[LIT_CHARS sed]} {[LIT_CHARS -e]} {[SQ ]} {[LIT_CHARS -e]} {[SQ ]} {[LIT_CHARS -e]} {[SQ ]}) )]})]) ) (If (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub repo]]}) (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub sm_path]]}) ) (Com {[LIT_CHARS usage]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS is_absolute_path]} {[DQ [VarSub sm_path]]}) (= scope= flags=0 words=[] bindings=[('sm_path', {[DQ [VarSub wt_prefix][VarSub sm_path]]})]) ) (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 "*"]}]] (List (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub wt_prefix]]}) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "Relative path can only be used from the toplevel of the working tree"]]})]]}) ) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('realrepo', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS submodule--helper]} {[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 -n]} {[DQ [VarSub custom_name]]}) (= scope= flags=0 words=[] bindings=[('sm_name', {[DQ [VarSub custom_name]]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('sm_name', {[DQ [VarSub sm_path]]})]) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -e]} {[DQ [VarSub sm_path]]}) (If (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -d]} {[DQ [VarSub sm_path]] [LIT_CHARS /.git]}) (Com {[LIT_CHARS test]} {[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 (If (Com {[LIT_CHARS test]} {[LIT_CHARS -d]} {[DQ [LIT_CHARS .git/modules/][VarSub sm_name]]}) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub force]]}) (List (Com {[LIT_CHARS eval_gettextln]} {[DQ [LIT_CHARS "A git directory for '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sm_name' is found locally with remote(s):"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Pipeline (Com {[LIT_CHARS git]} {[LIT_CHARS remote]} {[LIT_CHARS -v]} more_env=[('GIT_DIR', {[DQ [LIT_CHARS .git/modules/][VarSub sm_name]]}), ('GIT_WORK_TREE', {[LIT_CHARS .]})] ) (Com {[LIT_CHARS grep]} {[SQ ]}) (Com {[LIT_CHARS sed]} {[LIT_CHARS -e]} {[LIT_CHARS s] [LIT_COMMA ","] [LIT_OTHER "^"] [LIT_COMMA ","] [DQ [LIT_CHARS " "]] [LIT_COMMA ","]} {[LIT_CHARS -e]} {[LIT_CHARS s] [LIT_COMMA ","] [SQ ] [LIT_COMMA ","] [LIT_COMMA ","]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettextln]} {[DQ [LIT_CHARS "If you want to reuse this local git directory instead of cloning again from\n"][LIT_CHARS " "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "realrepo\n"][LIT_CHARS "use the '--force' option. If the local git directory is not the correct repo\n"][LIT_CHARS "or you are unsure what this means choose another name with the '--name' option."]]})]]}) ) (ElseTrue) (Com {[LIT_CHARS eval_gettextln]} {[DQ [LIT_CHARS "Reactivating local git directory for submodule '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sm_name'."]]}) ) ) (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS submodule--helper]} {[LIT_CHARS clone]} {[VarSub GIT_QUIET test_op=VS_TEST_COLON_PLUS {[LIT_CHARS --quiet]}]} {[LIT_CHARS --prefix]} {[DQ [VarSub wt_prefix]]} {[LIT_CHARS --path]} {[DQ [VarSub sm_path]]} {[LIT_CHARS --name]} {[DQ [VarSub sm_name]]} {[LIT_CHARS --url]} {[DQ [VarSub realrepo]]} {[VarSub reference test_op=VS_TEST_COLON_PLUS {[DQ [VarSub reference]]}]} {[VarSub depth test_op=VS_TEST_COLON_PLUS {[DQ [VarSub depth]]}]}) (Com {[LIT_CHARS exit]}) ) (AndOr OP_OR_IF (Subshell (List (Com {[LIT_CHARS sanitize_submodule_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_name]] [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_name]] [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_name]] [LIT_CHARS .url]} {[DQ [VarSub repo]]}) (AndOr OP_AND_IF (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub branch]]}) (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS -f]} {[LIT_CHARS .gitmodules]} {[LIT_CHARS submodule.] [DQ [VarSub sm_name]] [LIT_CHARS .branch]} {[DQ [VarSub branch]]}) ) (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 (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS submodule--helper]} {[LIT_CHARS list]} {[LIT_CHARS --prefix]} {[DQ [VarSub wt_prefix]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "#unmatched"]]} {[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]]} {[DQ [VarSub sha1]]}) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -e]} {[DQ [VarSub sm_path]] [LIT_CHARS /.git]}) (List (= scope= flags=0 words=[] bindings=[('displaypath', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS submodule--helper]} {[LIT_CHARS relative-path]} {[DQ [VarSub prefix][VarSub sm_path]]} {[DQ [VarSub wt_prefix]]})]})]) (Com {[LIT_CHARS say]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Entering '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "displaypath'"]]})]]}) (= scope= flags=0 words=[] bindings=[('name', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS submodule--helper]} {[LIT_CHARS 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 sanitize_submodule_env]}) (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[DQ [VarSub sm_path]]}) (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('sm_path', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS submodule--helper]} {[LIT_CHARS relative-path]} {[DQ [VarSub sm_path]]} {[DQ [VarSub wt_prefix]]})]})]) (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('path', {[VarSub sm_path]})]) (AndOr OP_AND_IF (If (Com {[LIT_CHARS test]} {[VarSub #]} {[LIT_CHARS -eq]} {[LIT_CHARS 1]}) (Com {[LIT_CHARS eval]} {[DQ [VarSub 1]]}) (ElseTrue) (Com {[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 "displaypath'; 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]}) ) ) (Com {[LIT_CHARS git]} {[VarSub wt_prefix test_op=VS_TEST_COLON_PLUS {[LIT_CHARS "-C "] [DQ [VarSub wt_prefix]]}]} {[LIT_CHARS submodule--helper]} {[LIT_CHARS init]} {[VarSub GIT_QUIET test_op=VS_TEST_COLON_PLUS {[LIT_CHARS --quiet]}]} {[VarSub prefix test_op=VS_TEST_COLON_PLUS {[LIT_CHARS "--prefix "] [DQ [VarSub prefix]]}]} {[DQ [VarSub @]]}) ) ) (FunctionDef cmd_deinit [] (List (= scope= flags=0 words=[] bindings=[('deinit_all', {[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 -f]}, {[LIT_CHARS --force]}], [{[LIT_CHARS -q]}, {[LIT_CHARS --quiet]}], [{[LIT_CHARS --all]}], [{[LIT_CHARS --]}], [{[LIT_CHARS -] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (= scope= flags=0 words=[] bindings=[('force', {[VarSub 1]})]) (= scope= flags=0 words=[] bindings=[('GIT_QUIET', {[LIT_CHARS 1]})]) (= scope= flags=0 words=[] bindings=[('deinit_all', {[LIT_CHARS t]})]) (List (Com {[LIT_CHARS shift]}) (Com {[LIT_CHARS break]}) ) (Com {[LIT_CHARS usage]}) (Com {[LIT_CHARS break]}) ) (Com {[LIT_CHARS shift]}) ) ) (If (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub deinit_all]]}) (Com {[LIT_CHARS test]} {[DQ [VarSub #]]} {[LIT_CHARS -ne]} {[LIT_CHARS 0]}) ) (List (Com {[LIT_CHARS echo]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "pathspec and --all are incompatible"]]})]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS usage]}) ) ) (If (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[VarSub #]} {[LIT_OTHER "="]} {[LIT_CHARS 0]}) (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub deinit_all]]}) ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Use '--all' if you really want to deinitialize all submodules"]]})]]}) ) (Pipeline (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS submodule--helper]} {[LIT_CHARS list]} {[LIT_CHARS --prefix]} {[DQ [VarSub wt_prefix]]} {[DQ [VarSub @]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "#unmatched"]]} {[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]]} {[DQ [VarSub sha1]]}) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('name', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS submodule--helper]} {[LIT_CHARS name]} {[DQ [VarSub sm_path]]})]})]) (Com {[LIT_CHARS exit]}) ) (= scope= flags=0 words=[] bindings=[('displaypath', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS submodule--helper]} {[LIT_CHARS relative-path]} {[DQ [VarSub sm_path]]} {[DQ [VarSub wt_prefix]]})]})]) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -d]} {[DQ [VarSub sm_path]]}) (List (If (Com {[LIT_CHARS test]} {[LIT_CHARS -d]} {[DQ [VarSub sm_path][LIT_CHARS /.git]]}) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Submodule work tree '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "displaypath' contains a .git directory\n"][LIT_CHARS "(use 'rm -rf' if you really want to remove it including all of its history)"]]})]]}) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub force]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS rm]} {[LIT_CHARS -qn]} {[DQ [VarSub sm_path]]}) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Submodule work tree '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "displaypath' contains local modifications; use '-f' to discard them"]]})]]}) ) ) (AndOr OP_AND_IF (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[DQ [VarSub sm_path]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS say]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Cleared directory '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "displaypath'"]]})]]}) (Com {[LIT_CHARS say]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Could not remove submodule work tree '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "displaypath'"]]})]]}) ) ) ) ) (AndOr OP_OR_IF (Com {[LIT_CHARS mkdir]} {[DQ [VarSub sm_path]]}) (Com {[LIT_CHARS say]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Could not create empty submodule directory '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "displaypath'"]]})]]}) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS --get-regexp]} {[LIT_CHARS submodule.] [DQ [VarSub name][\ LIT_ESCAPED_CHAR "\\."]]})]]}) (List (= scope= flags=0 words=[] bindings=[('url', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS submodule.] [DQ [VarSub name]] [LIT_CHARS .url]})]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS --remove-section]} {[LIT_CHARS submodule.] [DQ [VarSub name]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (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) unregistered for path '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "displaypath'"]]})]]}) ) ) ) ) ) ) ) ) (FunctionDef is_tip_reachable [] (Subshell (AndOr OP_AND_IF (Com {[LIT_CHARS sanitize_submodule_env]}) (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[DQ [VarSub 1]]}) (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]} {[DQ [VarSub 2]]} {[LIT_CHARS --not]} {[LIT_CHARS --all]})]})]) (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub rev]]}) ) ) ) ) ) (FunctionDef fetch_in_submodule [] (Subshell (AndOr OP_AND_IF (Com {[LIT_CHARS sanitize_submodule_env]}) (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[DQ [VarSub 1]]}) (Case to_match={[DQ [VarSub 2]]}, pat_word_list=[[{[SQ ]}], [{[LIT_OTHER "*"]}]] (Com {[LIT_CHARS git]} {[LIT_CHARS fetch]}) (List (Com {[LIT_CHARS shift]}) (Com {[LIT_CHARS git]} {[LIT_CHARS fetch]} {[ComSub (Com {[LIT_CHARS get_default_remote]})]} {[DQ [VarSub @]]}) ) ) ) ) ) ) (FunctionDef cmd_update [] (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 --progress]}], [{[LIT_CHARS -i]}, {[LIT_CHARS --init]}], [{[LIT_CHARS --remote]}], [{[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_OTHER "="] [LIT_OTHER "*"]}], [{[LIT_CHARS -m]}, {[LIT_CHARS --merge]}], [{[LIT_CHARS --recursive]}], [{[LIT_CHARS --checkout]}], [{[LIT_CHARS --recommend-shallow]}], [{[LIT_CHARS --no-recommend-shallow]}], [{[LIT_CHARS --depth]}], [{[LIT_CHARS --depth] [LIT_OTHER "="] [LIT_OTHER "*"]}], [{[LIT_CHARS -j]}, {[LIT_CHARS --jobs]}], [{[LIT_CHARS --jobs] [LIT_OTHER "="] [LIT_OTHER "*"]}], [{[LIT_CHARS --]}], [{[LIT_CHARS -] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (= scope= flags=0 words=[] bindings=[('GIT_QUIET', {[LIT_CHARS 1]})]) (= scope= flags=0 words=[] bindings=[('progress', {[DQ [LIT_CHARS --progress]]})]) (= scope= flags=0 words=[] bindings=[('init', {[LIT_CHARS 1]})]) (= scope= flags=0 words=[] bindings=[('remote', {[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]]})]) (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]]})]) (= scope= flags=0 words=[] bindings=[('recommend_shallow', {[DQ [LIT_CHARS --recommend-shallow]]})]) (= scope= flags=0 words=[] bindings=[('recommend_shallow', {[DQ [LIT_CHARS --no-recommend-shallow]]})]) (List (Case to_match={[DQ [VarSub 2]]}, pat_word_list=[[{[SQ ]}]] (Com {[LIT_CHARS usage]}) ) (= scope= flags=0 words=[] bindings=[('depth', {[DQ [LIT_CHARS "--depth="][VarSub 2]]})]) (Com {[LIT_CHARS shift]}) ) (= scope= flags=0 words=[] bindings=[('depth', {[VarSub 1]})]) (List (Case to_match={[DQ [VarSub 2]]}, pat_word_list=[[{[SQ ]}]] (Com {[LIT_CHARS usage]}) ) (= scope= flags=0 words=[] bindings=[('jobs', {[DQ [LIT_CHARS "--jobs="][VarSub 2]]})]) (Com {[LIT_CHARS shift]}) ) (= scope= flags=0 words=[] bindings=[('jobs', {[VarSub 1]})]) (List (Com {[LIT_CHARS shift]}) (Com {[LIT_CHARS break]}) ) (Com {[LIT_CHARS usage]}) (Com {[LIT_CHARS break]}) ) (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]}) ) ) (Pipeline (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS submodule--helper]} {[LIT_CHARS update-clone]} {[VarSub GIT_QUIET test_op=VS_TEST_COLON_PLUS {[LIT_CHARS --quiet]}]} {[VarSub progress test_op=VS_TEST_COLON_PLUS {[DQ [VarSub progress]]}]} {[VarSub wt_prefix test_op=VS_TEST_COLON_PLUS {[LIT_CHARS "--prefix "] [DQ [VarSub wt_prefix]]}]} {[VarSub prefix test_op=VS_TEST_COLON_PLUS {[LIT_CHARS "--recursive-prefix "] [DQ [VarSub prefix]]}]} {[VarSub update test_op=VS_TEST_COLON_PLUS {[LIT_CHARS "--update "] [DQ [VarSub update]]}]} {[VarSub reference test_op=VS_TEST_COLON_PLUS {[DQ [VarSub reference]]}]} {[VarSub depth test_op=VS_TEST_COLON_PLUS {[LIT_CHARS "--depth "] [DQ [VarSub depth]]}]} {[VarSub recommend_shallow test_op=VS_TEST_COLON_PLUS {[DQ [VarSub recommend_shallow]]}]} {[VarSub jobs test_op=VS_TEST_COLON_PLUS {[VarSub jobs]}]} {[DQ [VarSub @]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "#unmatched"]]} {[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 just_cloned]} {[LIT_CHARS sm_path]}) (List (Com {[LIT_CHARS die_if_unmatched]} {[DQ [VarSub mode]]} {[DQ [VarSub sha1]]}) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('name', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS submodule--helper]} {[LIT_CHARS 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) (List (= 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]} {[LIT_CHARS -z]} {[DQ [VarSub update_module]]}) (= scope= flags=0 words=[] bindings=[('update_module', {[DQ [LIT_CHARS checkout]]})]) ) ) ) (= scope= flags=0 words=[] bindings=[('displaypath', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS submodule--helper]} {[LIT_CHARS relative-path]} {[DQ [VarSub prefix][VarSub sm_path]]} {[DQ [VarSub wt_prefix]]})]})]) (If (Com {[LIT_CHARS test]} {[VarSub just_cloned]} {[LIT_CHARS -eq]} {[LIT_CHARS 1]}) (List (= scope= flags=0 words=[] bindings=[('subsha1', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('update_module', {[LIT_CHARS checkout]})]) ) (ElseTrue) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('subsha1', {[ComSub (List (Com {[LIT_CHARS sanitize_submodule_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 "displaypath'"]]})]]}) ) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub remote]]}) (List (= scope= flags=0 words=[] bindings=[('branch', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS submodule--helper]} {[LIT_CHARS remote-branch]} {[DQ [VarSub sm_path]]})]})]) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub nofetch]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS fetch_in_submodule]} {[DQ [VarSub sm_path]]} {[VarSub depth]}) (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'"]]})]]}) ) ) (= scope= flags=0 words=[] bindings=[('remote_name', {[ComSub (List (Com {[LIT_CHARS sanitize_submodule_env]}) (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[DQ [VarSub sm_path]]}) (Com {[LIT_CHARS get_default_remote]}) ) )]})]) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('sha1', {[ComSub (List (Com {[LIT_CHARS sanitize_submodule_env]}) (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[DQ [VarSub sm_path]]}) (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --verify]} {[DQ [VarSub remote_name][LIT_CHARS /][VarSub branch]]}) ) )]})]) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Unable to find current "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "{remote_name}/"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "{branch} revision in submodule path '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sm_path'"]]})]]}) ) ) ) (If (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[DQ [VarSub subsha1]]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[DQ [VarSub sha1]]}) (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub force]]}) ) (List (= scope= flags=0 words=[] bindings=[('subforce', {[VarSub force]})]) (If (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub subsha1]]}) (Com {[LIT_CHARS test]} {[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]]}) (List (AndOr OP_OR_IF (Com {[LIT_CHARS is_tip_reachable]} {[DQ [VarSub sm_path]]} {[DQ [VarSub sha1]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS fetch_in_submodule]} {[DQ [VarSub sm_path]]} {[VarSub depth]}) (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 "displaypath'"]]})]]}) ) ) (AndOr OP_OR_IF (Com {[LIT_CHARS is_tip_reachable]} {[DQ [VarSub sm_path]]} {[DQ [VarSub sha1]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS fetch_in_submodule]} {[DQ [VarSub sm_path]]} {[VarSub depth]} {[DQ [VarSub sha1]]}) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Fetched in submodule path '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "displaypath', but it did not contain "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sha1. Direct fetching of that commit failed."]]})]]}) ) ) ) ) (= scope= flags=0 words=[] bindings=[('must_die_on_failure', {[SQ ]})]) (Case to_match={[DQ [VarSub update_module]]}, pat_word_list=[[{[LIT_CHARS checkout]}], [{[LIT_CHARS rebase]}], [{[LIT_CHARS merge]}], [{[LIT_OTHER "!"] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (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 "displaypath'"]]})]]})]) (= scope= flags=0 words=[] bindings=[('say_msg', {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Submodule path '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "displaypath': checked out '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sha1'"]]})]]})]) ) (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 "displaypath'"]]})]]})]) (= scope= flags=0 words=[] bindings=[('say_msg', {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Submodule path '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "displaypath': 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 "displaypath'"]]})]]})]) (= scope= flags=0 words=[] bindings=[('say_msg', {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Submodule path '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "displaypath': 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 [VarSub update_module transform_ops=[VS_UNARY_POUND {[LIT_CHARS "!"]}]]]})]) (= scope= flags=0 words=[] bindings=[('die_msg', {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Execution of '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "command "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sha1' failed in submodule path '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "displaypath'"]]})]]})]) (= scope= flags=0 words=[] bindings=[('say_msg', {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Submodule path '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "displaypath': '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "command "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "sha1'"]]})]]})]) (= scope= flags=0 words=[] bindings=[('must_die_on_failure', {[LIT_CHARS yes]})]) ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Invalid update mode '"][VarSub update_module][LIT_CHARS "' for submodule '"][VarSub name][LIT_CHARS "'"]]})]]}) ) (If (Subshell (List (Com {[LIT_CHARS sanitize_submodule_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 (= scope= flags=0 words=[] bindings=[('prefix', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS submodule--helper]} {[LIT_CHARS relative-path]} {[DQ [VarSub prefix][VarSub sm_path][LIT_CHARS /]]} {[DQ [VarSub wt_prefix]]})]})]) (= scope= flags=0 words=[] bindings=[('wt_prefix', {[SQ ]})]) (Com {[LIT_CHARS sanitize_submodule_env]}) (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[DQ [VarSub sm_path]]}) (Com {[LIT_CHARS eval]} {[LIT_CHARS cmd_update]}) ) ) ) (= 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 "displaypath'"]]})]]})]) (If (Com {[LIT_CHARS test]} {[VarSub res]} {[LIT_CHARS -ne]} {[LIT_CHARS 2]}) (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 sanitize_submodule_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 --summary-limit] [LIT_OTHER "="] [LIT_OTHER "*"]}], [{[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 (= scope= flags=0 words=[] bindings=[('summary_limit', {[DQ [VarSub 2]]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS isnumber]} {[DQ [VarSub summary_limit]]}) (Com {[LIT_CHARS usage]}) ) (Com {[LIT_CHARS shift]}) ) (List (= scope= flags=0 words=[] bindings=[('summary_limit', {[DQ [VarSub 1 transform_ops=[VS_UNARY_POUND {[LIT_CHARS "--summary-limit="]}]]]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS isnumber]} {[DQ [VarSub summary_limit]]}) (Com {[LIT_CHARS usage]}) ) ) (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_OTHER "="]} {[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_OTHER "="]} {[LIT_CHARS 0]}) (Com {[LIT_CHARS shift]}) ) ) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub 1]]}) (Com {[LIT_CHARS test]} {[DQ [VarSub 1]]} {[LIT_OTHER "="]} {[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_OTHER "["]} {[LIT_CHARS -n]} {[DQ [VarSub files]]} {[LIT_OTHER "]"]}) (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]}) (Com {[LIT_CHARS eval]} {[DQ [LIT_CHARS "set "][ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --sq]} {[LIT_CHARS --prefix]} {[DQ [VarSub wt_prefix]]} {[LIT_CHARS --]} {[DQ [VarSub @]]})]]}) (= scope= flags=0 words=[] bindings=[('modules', {[ComSub (Pipeline (Com {[LIT_CHARS git]} {[VarSub diff_cmd]} {[VarSub cached]} {[LIT_CHARS --ignore-submodules] [LIT_OTHER "="] [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 sm_path]}) (List (If (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[DQ [VarSub status]]} {[LIT_OTHER "="]} {[LIT_CHARS D]}) (Com {[LIT_CHARS test]} {[DQ [VarSub status]]} {[LIT_OTHER "="]} {[LIT_CHARS T]}) ) (List (Com {[LIT_CHARS printf]} {[SQ ]} {[DQ [VarSub sm_path]]}) (Com {[LIT_CHARS continue]}) ) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub for_status]]}) (List (= scope= flags=0 words=[] bindings=[('name', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS submodule--helper]} {[LIT_CHARS name]} {[DQ [VarSub sm_path]]})]})]) (= scope= flags=0 words=[] bindings=[('ignore_config', {[ComSub (Com {[LIT_CHARS get_submodule_config]} {[DQ [VarSub name]]} {[LIT_CHARS ignore]} {[LIT_CHARS none]})]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[VarSub status]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[LIT_CHARS A]}) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[VarSub ignore_config]} {[LIT_OTHER "="]} {[LIT_CHARS all]}) (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 sm_path][LIT_CHARS /.git]]})] {[LIT_CHARS git-rev-parse]} {[LIT_CHARS --git-dir]}) (Com {[LIT_CHARS printf]} {[SQ ]} {[DQ [VarSub sm_path]]}) ) ) ) )]})]) (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_OTHER "="] [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_OTHER "="]} {[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_OTHER "="]} {[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_OTHER "="]} {[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=[('display_name', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS submodule--helper]} {[LIT_CHARS relative-path]} {[DQ [VarSub name]]} {[DQ [VarSub wt_prefix]]})]})]) (= 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 "display_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 "display_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 "display_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 (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[VarSub mod_src]} {[LIT_OTHER "="]} {[LIT_CHARS 160000]}) (Com {[LIT_CHARS test]} {[VarSub mod_dst]} {[LIT_OTHER "="]} {[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_OTHER "="]} {[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_OTHER "="]} {[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_OTHER "="]} {[LIT_CHARS 160000]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "* "][VarSub display_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 display_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 display_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_OTHER "="]} {[LIT_CHARS 160000]}) (Com {[LIT_CHARS echo]} {[DQ [VarSub errmsg]]}) ) (ElseTrue) (List (If (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[VarSub mod_src]} {[LIT_OTHER "="]} {[LIT_CHARS 160000]}) (Com {[LIT_CHARS test]} {[VarSub mod_dst]} {[LIT_OTHER "="]} {[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_OTHER "="] [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_OTHER "="]} {[LIT_CHARS 160000]}) (Com {[LIT_CHARS git]} {[LIT_CHARS log]} {[LIT_CHARS --pretty] [LIT_OTHER "="] [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_OTHER "="] [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]}) ) ) ) ) ) (FunctionDef cmd_status [] (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 --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]}) ) (Com {[LIT_CHARS shift]}) ) ) (Pipeline (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS submodule--helper]} {[LIT_CHARS list]} {[LIT_CHARS --prefix]} {[DQ [VarSub wt_prefix]]} {[DQ [VarSub @]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "#unmatched"]]} {[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]]} {[DQ [VarSub sha1]]}) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('name', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS submodule--helper]} {[LIT_CHARS 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', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS submodule--helper]} {[LIT_CHARS relative-path]} {[DQ [VarSub prefix][VarSub sm_path]]} {[DQ [VarSub wt_prefix]]})]})]) (If (Com {[LIT_CHARS test]} {[DQ [VarSub stage]]} {[LIT_OTHER "="]} {[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]]}) (AndOr OP_AND_IF (Pipeline! (Com {[LIT_CHARS test]} {[LIT_CHARS -d]} {[DQ [VarSub sm_path]] [LIT_CHARS /.git]}) ) (Pipeline! (Com {[LIT_CHARS test]} {[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]}) ) ) (If (Com {[LIT_CHARS git]} {[LIT_CHARS diff-files]} {[LIT_CHARS --ignore-submodules] [LIT_OTHER "="] [LIT_CHARS dirty]} {[LIT_CHARS --quiet]} {[LIT_CHARS --]} {[DQ [VarSub sm_path]]}) (List (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]]}) ) (ElseTrue) (List (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub cached]]}) (= scope= flags=0 words=[] bindings=[('sha1', {[ComSub (List (Com {[LIT_CHARS sanitize_submodule_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 sanitize_submodule_env]}) (= scope= flags=0 words=[] bindings=[('wt_prefix', {[SQ ]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[DQ [VarSub sm_path]]}) (Com {[LIT_CHARS eval]} {[LIT_CHARS cmd_status]}) ) ) ) (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 --recursive]}], [{[LIT_CHARS --]}], [{[LIT_CHARS -] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (List (= scope= flags=0 words=[] bindings=[('GIT_QUIET', {[LIT_CHARS 1]})]) (Com {[LIT_CHARS shift]}) ) (List (= scope= flags=0 words=[] bindings=[('recursive', {[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 (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS submodule--helper]} {[LIT_CHARS list]} {[LIT_CHARS --prefix]} {[DQ [VarSub wt_prefix]]} {[DQ [VarSub @]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "#unmatched"]]} {[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]]} {[DQ [VarSub sha1]]}) (= scope= flags=0 words=[] bindings=[('name', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS submodule--helper]} {[LIT_CHARS 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 printf]} {[SQ ]} {[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 git]} {[LIT_CHARS submodule--helper]} {[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 git]} {[LIT_CHARS submodule--helper]} {[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 (= scope= flags=0 words=[] bindings=[('displaypath', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS submodule--helper]} {[LIT_CHARS relative-path]} {[DQ [VarSub prefix][VarSub sm_path]]} {[DQ [VarSub wt_prefix]]})]})]) (Com {[LIT_CHARS say]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Synchronizing submodule url for '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "displaypath'"]]})]]}) (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 sanitize_submodule_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]]}) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub recursive]]}) (List (= scope= flags=0 words=[] bindings=[('prefix', {[DQ [VarSub prefix][VarSub sm_path][LIT_CHARS /]]})]) (Com {[LIT_CHARS eval]} {[LIT_CHARS cmd_sync]}) ) ) ) ) ) ) ) ) ) ) ) ) (While (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[VarSub #]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[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 deinit]}, {[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]}) ) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub command]]}) (If (Com {[LIT_CHARS test]} {[VarSub #]} {[LIT_OTHER "="]} {[LIT_CHARS 0]}) (= scope= flags=0 words=[] bindings=[('command', {[LIT_CHARS status]})]) (ElseTrue) (Com {[LIT_CHARS usage]}) ) ) (If (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub branch]]}) (Com {[LIT_CHARS test]} {[DQ [VarSub command]]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[LIT_CHARS add]}) ) (Com {[LIT_CHARS usage]}) ) (If (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub cached]]}) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[DQ [VarSub command]]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[LIT_CHARS status]}) (Com {[LIT_CHARS test]} {[DQ [VarSub command]]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[LIT_CHARS summary]}) ) ) (Com {[LIT_CHARS usage]}) ) (Com {[DQ [LIT_CHARS cmd_][VarSub command]]} {[DQ [VarSub @]]}) )