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

[PATCH v2 5/5] fetch: Make --jobs control submodules and remotes

From
Palmer Dabbelt <palmer@sifive.com>
Date
Aug 12, 2019, 21:34 UTC
Message-ID
<20190812213448.2649-6-palmer@sifive.com>
In-Reply-To
<20190812213448.2649-1-palmer@sifive.com>

The existing --jobs argument was defined to control the number of jobs used for submodule fetching, but it makes more sense to have this argument control the number of jobs to be used when fetching from multiple remotes as well.

This patch simply changes the --jobs argument parsing code to set both max_children_for_{submodules,fetch}, as well as noting this new behavior in the documentation.

Signed-off-by: Palmer Dabbelt <palmer@sifive.com>
---
 Documentation/fetch-options.txt |  4 ++++
 builtin/fetch.c                 | 21 ++++++++++++++++++---
 2 files changed, 22 insertions(+), 3 deletions(-)
diff --git a/Documentation/fetch-options.txt b/Documentation/fetch-options.txt
index 5836024f1934..0915fd4ed6d5 100644
--- a/Documentation/fetch-options.txt
+++ b/Documentation/fetch-options.txt
@@ -160,6 +160,10 @@ ifndef::git-pull[]
 
 -j::
 --jobs=<n>::
+	Number of parallel children to be used for all forms of fetching.
+	This is the same as passing `--submodule-fetch-jobs=<n>` and
+	`--fetch-jobs=<n>`.
+
 --submodule-fetch-jobs=<n>::
 	Number of parallel children to be used for fetching submodules.
 	Each will fetch from different submodules, such that fetching many
diff --git a/builtin/fetch.c b/builtin/fetch.c
index 67d001f3f78b..41498e9efb3b 100644
--- a/builtin/fetch.c
+++ b/builtin/fetch.c
@@ -114,6 +114,20 @@ static int git_fetch_config(const char *k, const char *v, void *cb)
 	return git_default_config(k, v, cb);
 }
 
+static int parse_jobs_arg(const struct option *opt, const char *arg, int unset)
+{
+	int jobs;
+
+	jobs = atoi(arg);
+	if (jobs < 1)
+		die(_("There must be a positive number of jobs"));
+
+	max_children_for_submodules = jobs;
+	max_children_for_fetch = jobs;
+
+	return 0;
+}
+
 static int parse_refmap_arg(const struct option *opt, const char *arg, int unset)
 {
 	BUG_ON_OPT_NEG(unset);
@@ -142,12 +156,13 @@ static struct option builtin_fetch_options[] = {
 		    N_("fetch all tags and associated objects"), TAGS_SET),
 	OPT_SET_INT('n', NULL, &tags,
 		    N_("do not fetch all tags (--no-tags)"), TAGS_UNSET),
-	OPT_INTEGER('j', "jobs", &max_children_for_submodules,
+	{ OPTION_CALLBACK, 'j', "jobs", NULL, N_("jobs"),
+		    N_("number of parallel tasks to run while fetching"),
+		    PARSE_OPT_OPTARG, &parse_jobs_arg },
+	OPT_INTEGER(0, "submodule-fetch-jobs", &max_children_for_submodules,
 		    N_("number of submodules fetched in parallel")),
 	OPT_INTEGER(0, "fetch-jobs", &max_children_for_fetch,
 		    N_("number of remotes fetched in parallel")),
-	OPT_INTEGER(0, "submodule-fetch-jobs", &max_children_for_submodules,
-		    N_("number of submodules fetched in parallel")),
 	OPT_BOOL('p', "prune", &prune,
 		 N_("prune remote-tracking branches no longer on remote")),
 	OPT_BOOL('P', "prune-tags", &prune_tags,
-- 
2.21.0
Previous: Palmer DabbeltNext: Johannes Schindelin
Message 7 of 14 in “fetch: Extend --jobs to multiple remotes”
  1. 0/5 fetch: Extend --jobs to multiple remotesPalmer Dabbelt, Aug 12, 2019
  2. 1/5 fetch: Rename max_children to max_children_for_submodulesPalmer Dabbelt, Aug 12, 2019
  3. 2/5 fetch: Add the "--fetch-jobs" optionPalmer Dabbelt, Aug 12, 2019
  4. Eric WongAug 13, 2019
  5. 3/5 fetch: Add the fetch.jobs config keyPalmer Dabbelt, Aug 12, 2019
  6. 4/5 fetch: Add the --submodule-fetch-jobs optionPalmer Dabbelt, Aug 12, 2019
  7. 5/5 fetch: Make --jobs control submodules and remotesPalmer Dabbelt, Aug 12, 2019
  8. Johannes SchindelinAug 13, 2019
  9. Palmer DabbeltAug 13, 2019
  10. Junio C HamanoAug 13, 2019
  11. Palmer DabbeltAug 13, 2019
  12. SZEDER GáborAug 14, 2019
  13. Junio C HamanoAug 14, 2019
  14. Palmer DabbeltAug 14, 2019

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.