git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v4 2/3] sumodule--helper: fix submodule--helper clone usage and check argc count

From
Jacob Keller <jacob.e.keller@intel.com>
Date
Feb 26, 2016, 19:18 UTC
Message-ID
<1456514328-10153-2-git-send-email-jacob.e.keller@intel.com>
In-Reply-To
<1456514328-10153-1-git-send-email-jacob.e.keller@intel.com>
From: Jacob Keller <jacob.keller@gmail.com>

git submodule--helper clone usage specified that paths come after the -- as a sequence. However, the actual implementation does not, and requires only a single path passed in via --path. In addition, argc was unchecked. (allowing arbitrary extra arguments that were silently ignored).

Fix the usage description to match implementation. Add an argc check to enforce no extra arguments. Fix a bug in the argument passing in git-submodule.sh which would pass --reference and --depth as empty strings when they were unused, resulting in extra argc after parsing options.

Signed-off-by: Jacob Keller <jacob.keller@gmail.com>
---
 builtin/submodule--helper.c | 5 ++++-
 git-submodule.sh            | 4 ++--
 2 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c
index f4c3eff179b5..072d9bbd12a8 100644
--- a/builtin/submodule--helper.c
+++ b/builtin/submodule--helper.c
@@ -187,13 +187,16 @@ static int module_clone(int argc, const char **argv, const char *prefix)
 	const char *const git_submodule_helper_usage[] = {
 		N_("git submodule--helper clone [--prefix=<path>] [--quiet] "
 		   "[--reference <repository>] [--name <name>] [--url <url>]"
-		   "[--depth <depth>] [--] [<path>...]"),
+		   "[--depth <depth>] [--path <path>]"),
 		NULL
 	};
 
 	argc = parse_options(argc, argv, prefix, module_clone_options,
 			     git_submodule_helper_usage, 0);
 
+	if (argc)
+		usage(*git_submodule_helper_usage);
+
 	strbuf_addf(&sb, "%s/modules/%s", get_git_dir(), name);
 	sm_gitdir = strbuf_detach(&sb, NULL);
 
diff --git a/git-submodule.sh b/git-submodule.sh
index 9bc5c5f94d1d..2dd29b3df0e6 100755
--- a/git-submodule.sh
+++ b/git-submodule.sh
@@ -347,7 +347,7 @@ Use -f if you really want to add it." >&2
 				echo "$(eval_gettext "Reactivating local git directory for submodule '\$sm_name'.")"
 			fi
 		fi
-		git submodule--helper clone ${GIT_QUIET:+--quiet} --prefix "$wt_prefix" --path "$sm_path" --name "$sm_name" --url "$realrepo" "$reference" "$depth" || exit
+		git submodule--helper clone ${GIT_QUIET:+--quiet} --prefix "$wt_prefix" --path "$sm_path" --name "$sm_name" --url "$realrepo" ${reference:+"$reference"} ${depth:+"$depth"} || exit
 		(
 			clear_local_git_env
 			cd "$sm_path" &&
@@ -709,7 +709,7 @@ Maybe you want to use 'update --init'?")"
 
 		if ! test -d "$sm_path"/.git && ! test -f "$sm_path"/.git
 		then
-			git submodule--helper clone ${GIT_QUIET:+--quiet} --prefix "$prefix" --path "$sm_path" --name "$name" --url "$url" "$reference" "$depth" || exit
+			git submodule--helper clone ${GIT_QUIET:+--quiet} --prefix "$prefix" --path "$sm_path" --name "$name" --url "$url" ${reference:+"$reference"} ${depth:+"$depth"} || exit
 			cloned_modules="$cloned_modules;$name"
 			subsha1=
 		else
-- 
2.7.1.429.g45cd78e
Previous: Jacob KellerNext: Stefan Beller
Message 2 of 8 in “t/lib-httpd: load mod_unixd”
  1. 1/3 t/lib-httpd: load mod_unixdJacob Keller, Feb 26, 2016
  2. 2/3 sumodule--helper: fix submodule--helper clone usage and check argc countJacob Keller, Feb 26, 2016
  3. Stefan BellerFeb 26, 2016
  4. Jacob KellerFeb 26, 2016
  5. 3/3 git: submodule honor -c credential.* from command lineJacob Keller, Feb 26, 2016
  6. Jeff KingFeb 26, 2016
  7. Jacob KellerFeb 26, 2016
  8. Jacob KellerFeb 27, 2016

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.