git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Brandon Williams <bmwill@google.com>
To: git@vger.kernel.org
Cc: sbeller@google.com, jrnieder@gmail.com, gitster@pobox.com,
	Brandon Williams <bmwill@google.com>
Subject: [PATCH v4 05/10] submodule: remove submodule.fetchjobs from submodule-config parsing
Date: Wed,  2 Aug 2017 12:49:18 -0700	[thread overview]
Message-ID: <20170802194923.88239-6-bmwill@google.com> (raw)
In-Reply-To: <20170802194923.88239-1-bmwill@google.com>

The '.gitmodules' file should only contain information pertinent to
configuring individual submodules (name to path mapping, URL where to
obtain the submodule, etc.) while other configuration like the number of
jobs to use when fetching submodules should be a part of the
repository's config.

Remove the 'submodule.fetchjobs' configuration option from the general
submodule-config parsing and instead rely on using the
'config_from_gitmodules()' in order to maintain backwards compatibility
with this config being placed in the '.gitmodules' file.

Signed-off-by: Brandon Williams <bmwill@google.com>
---
 builtin/fetch.c             | 18 +++++++++++++++++-
 builtin/submodule--helper.c | 17 +++++++++++++----
 submodule-config.c          |  8 ++++++++
 submodule-config.h          |  1 +
 submodule.c                 | 16 +---------------
 submodule.h                 |  1 -
 6 files changed, 40 insertions(+), 21 deletions(-)

diff --git a/builtin/fetch.c b/builtin/fetch.c
index c87e59f3b..ade092bf8 100644
--- a/builtin/fetch.c
+++ b/builtin/fetch.c
@@ -39,7 +39,7 @@ static int prune = -1; /* unspecified */
 static int all, append, dry_run, force, keep, multiple, update_head_ok, verbosity, deepen_relative;
 static int progress = -1;
 static int tags = TAGS_DEFAULT, unshallow, update_shallow, deepen;
-static int max_children = -1;
+static int max_children = 1;
 static enum transport_family family;
 static const char *depth;
 static const char *deepen_since;
@@ -68,9 +68,24 @@ static int git_fetch_config(const char *k, const char *v, void *cb)
 		recurse_submodules = r;
 	}
 
+	if (!strcmp(k, "submodule.fetchjobs")) {
+		max_children = parse_submodule_fetchjobs(k, v);
+		return 0;
+	}
+
 	return git_default_config(k, v, cb);
 }
 
+static int gitmodules_fetch_config(const char *var, const char *value, void *cb)
+{
+	if (!strcmp(var, "submodule.fetchjobs")) {
+		max_children = parse_submodule_fetchjobs(var, value);
+		return 0;
+	}
+
+	return 0;
+}
+
 static int parse_refmap_arg(const struct option *opt, const char *arg, int unset)
 {
 	ALLOC_GROW(refmap_array, refmap_nr + 1, refmap_alloc);
@@ -1311,6 +1326,7 @@ int cmd_fetch(int argc, const char **argv, const char *prefix)
 	for (i = 1; i < argc; i++)
 		strbuf_addf(&default_rla, " %s", argv[i]);
 
+	config_from_gitmodules(gitmodules_fetch_config, NULL);
 	git_config(git_fetch_config, NULL);
 
 	argc = parse_options(argc, argv, prefix,
diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c
index 6abdad329..6d9600d4f 100644
--- a/builtin/submodule--helper.c
+++ b/builtin/submodule--helper.c
@@ -960,10 +960,19 @@ static int update_clone_task_finished(int result,
 	return 0;
 }
 
+static int gitmodules_update_clone_config(const char *var, const char *value,
+					  void *cb)
+{
+	int *max_jobs = cb;
+	if (!strcmp(var, "submodule.fetchjobs"))
+		*max_jobs = parse_submodule_fetchjobs(var, value);
+	return 0;
+}
+
 static int update_clone(int argc, const char **argv, const char *prefix)
 {
 	const char *update = NULL;
-	int max_jobs = -1;
+	int max_jobs = 1;
 	struct string_list_item *item;
 	struct pathspec pathspec;
 	struct submodule_update_clone suc = SUBMODULE_UPDATE_CLONE_INIT;
@@ -1000,6 +1009,9 @@ static int update_clone(int argc, const char **argv, const char *prefix)
 	};
 	suc.prefix = prefix;
 
+	config_from_gitmodules(gitmodules_update_clone_config, &max_jobs);
+	git_config(gitmodules_update_clone_config, &max_jobs);
+
 	argc = parse_options(argc, argv, prefix, module_update_clone_options,
 			     git_submodule_helper_usage, 0);
 
@@ -1017,9 +1029,6 @@ static int update_clone(int argc, const char **argv, const char *prefix)
 	gitmodules_config();
 	git_config(submodule_config, NULL);
 
-	if (max_jobs < 0)
-		max_jobs = parallel_submodules();
-
 	run_processes_parallel(max_jobs,
 			       update_clone_get_next_task,
 			       update_clone_start_failure,
diff --git a/submodule-config.c b/submodule-config.c
index 5fe2d0787..70400f553 100644
--- a/submodule-config.c
+++ b/submodule-config.c
@@ -248,6 +248,14 @@ static int parse_fetch_recurse(const char *opt, const char *arg,
 	}
 }
 
+int parse_submodule_fetchjobs(const char *var, const char *value)
+{
+	int fetchjobs = git_config_int(var, value);
+	if (fetchjobs < 0)
+		die(_("negative values not allowed for submodule.fetchjobs"));
+	return fetchjobs;
+}
+
 int parse_fetch_recurse_submodules_arg(const char *opt, const char *arg)
 {
 	return parse_fetch_recurse(opt, arg, 1);
diff --git a/submodule-config.h b/submodule-config.h
index 233bfcb7f..995d404f8 100644
--- a/submodule-config.h
+++ b/submodule-config.h
@@ -27,6 +27,7 @@ struct repository;
 
 extern void submodule_cache_free(struct submodule_cache *cache);
 
+extern int parse_submodule_fetchjobs(const char *var, const char *value);
 extern int parse_fetch_recurse_submodules_arg(const char *opt, const char *arg);
 struct option;
 extern int option_fetch_parse_recurse_submodules(const struct option *opt,
diff --git a/submodule.c b/submodule.c
index 64ad5c12d..aa4fb1eaa 100644
--- a/submodule.c
+++ b/submodule.c
@@ -22,7 +22,6 @@
 
 static int config_fetch_recurse_submodules = RECURSE_SUBMODULES_ON_DEMAND;
 static int config_update_recurse_submodules = RECURSE_SUBMODULES_OFF;
-static int parallel_jobs = 1;
 static struct string_list changed_submodule_paths = STRING_LIST_INIT_DUP;
 static int initialized_fetch_ref_tips;
 static struct oid_array ref_tips_before_fetch;
@@ -159,12 +158,7 @@ void set_diffopt_flags_from_submodule_config(struct diff_options *diffopt,
 /* For loading from the .gitmodules file. */
 static int git_modules_config(const char *var, const char *value, void *cb)
 {
-	if (!strcmp(var, "submodule.fetchjobs")) {
-		parallel_jobs = git_config_int(var, value);
-		if (parallel_jobs < 0)
-			die(_("negative values not allowed for submodule.fetchJobs"));
-		return 0;
-	} else if (starts_with(var, "submodule."))
+	if (starts_with(var, "submodule."))
 		return parse_submodule_config_option(var, value);
 	else if (!strcmp(var, "fetch.recursesubmodules")) {
 		config_fetch_recurse_submodules = parse_fetch_recurse_submodules_arg(var, value);
@@ -1303,9 +1297,6 @@ int fetch_populated_submodules(const struct argv_array *options,
 	argv_array_push(&spf.args, "--recurse-submodules-default");
 	/* default value, "--submodule-prefix" and its value are added later */
 
-	if (max_parallel_jobs < 0)
-		max_parallel_jobs = parallel_jobs;
-
 	calculate_changed_submodule_paths();
 	run_processes_parallel(max_parallel_jobs,
 			       get_next_submodule,
@@ -1825,11 +1816,6 @@ int merge_submodule(struct object_id *result, const char *path,
 	return 0;
 }
 
-int parallel_submodules(void)
-{
-	return parallel_jobs;
-}
-
 /*
  * Embeds a single submodules git directory into the superprojects git dir,
  * non recursively.
diff --git a/submodule.h b/submodule.h
index e85b14486..c8164a3b2 100644
--- a/submodule.h
+++ b/submodule.h
@@ -112,7 +112,6 @@ extern int push_unpushed_submodules(struct oid_array *commits,
 				    const struct string_list *push_options,
 				    int dry_run);
 extern void connect_work_tree_and_git_dir(const char *work_tree, const char *git_dir);
-extern int parallel_submodules(void);
 /*
  * Given a submodule path (as in the index), return the repository
  * path of that submodule in 'buf'. Return -1 on error or when the
-- 
2.14.0.rc1.383.gd1ce394fe2-goog


  parent reply	other threads:[~2017-08-02 19:49 UTC|newest]

Thread overview: 68+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-07-11 22:04 [PATCH 0/3] Convert grep to recurse in-process Brandon Williams
2017-07-11 22:04 ` [PATCH 1/3] repo_read_index: don't discard the index Brandon Williams
2017-07-11 23:51   ` Jonathan Nieder
2017-07-12 17:27     ` Brandon Williams
2017-07-11 23:58   ` Stefan Beller
2017-07-12 17:23     ` Brandon Williams
2017-07-11 22:04 ` [PATCH 2/3] setup: have the_repository use the_index Brandon Williams
2017-07-12  0:00   ` Jonathan Nieder
2017-07-12  0:07     ` Stefan Beller
2017-07-12 17:30     ` Brandon Williams
2017-07-12  0:11   ` Junio C Hamano
2017-07-12 18:01     ` Brandon Williams
2017-07-12 20:38       ` Junio C Hamano
2017-07-12 21:33         ` Jonathan Nieder
2017-07-12 21:40           ` Junio C Hamano
2017-07-18 21:34             ` Junio C Hamano
2017-07-11 22:04 ` [PATCH 3/3] grep: recurse in-process using 'struct repository' Brandon Williams
2017-07-11 22:44   ` Jacob Keller
2017-07-12 18:54     ` Brandon Williams
2017-07-12  0:04   ` Stefan Beller
2017-07-12 18:56     ` Brandon Williams
2017-07-12  0:25   ` Jonathan Nieder
2017-07-12 18:49     ` Brandon Williams
2017-07-12  7:42 ` [PATCH 0/3] Convert grep to recurse in-process Jeff King
2017-07-12 18:06   ` Brandon Williams
2017-07-12 18:17     ` Jeff King
2017-07-12 18:24       ` Jonathan Nieder
2017-07-12 18:33         ` Jeff King
2017-07-12 18:09   ` Jonathan Nieder
2017-07-12 18:17     ` Stefan Beller
2017-07-12 18:27     ` Jeff King
2017-07-14 22:28 ` [PATCH v2 " Brandon Williams
2017-07-14 22:28   ` [PATCH v2 1/3] repo_read_index: don't discard the index Brandon Williams
2017-07-14 22:28   ` [PATCH v2 2/3] repository: have the_repository use the_index Brandon Williams
2017-07-14 22:28   ` [PATCH v2 3/3] grep: recurse in-process using 'struct repository' Brandon Williams
2017-07-18 19:05   ` [PATCH v3 00/10] Convert grep to recurse in-process Brandon Williams
2017-07-18 19:05     ` [PATCH v3 01/10] repo_read_index: don't discard the index Brandon Williams
2017-07-18 19:05     ` [PATCH v3 02/10] repository: have the_repository use the_index Brandon Williams
2017-07-18 19:05     ` [PATCH v3 03/10] cache.h: add GITMODULES_FILE macro Brandon Williams
2017-07-31 23:11       ` [PATCH] convert any hard coded .gitmodules file string to the MACRO Stefan Beller
2017-08-01 13:14         ` Jeff Hostetler
2017-08-01 17:35           ` Stefan Beller
2017-08-01 20:26             ` Junio C Hamano
2017-08-02 17:26               ` Brandon Williams
2017-08-02 17:46               ` Brandon Williams
2017-07-18 19:05     ` [PATCH v3 04/10] config: add config_from_gitmodules Brandon Williams
2017-07-18 19:05     ` [PATCH v3 05/10] submodule: remove submodule.fetchjobs from submodule-config parsing Brandon Williams
2017-07-18 19:05     ` [PATCH v3 06/10] submodule: remove fetch.recursesubmodules " Brandon Williams
2017-07-18 19:05     ` [PATCH v3 07/10] submodule: check for unstaged .gitmodules outside of config parsing Brandon Williams
2017-07-31 23:41       ` Stefan Beller
2017-08-02 17:41         ` Brandon Williams
2017-08-02 18:00           ` Brandon Williams
2017-07-18 19:05     ` [PATCH v3 08/10] submodule: check for unmerged " Brandon Williams
2017-07-18 19:05     ` [PATCH v3 09/10] submodule: merge repo_read_gitmodules and gitmodules_config Brandon Williams
2017-07-18 19:05     ` [PATCH v3 10/10] grep: recurse in-process using 'struct repository' Brandon Williams
2017-07-18 19:36     ` [PATCH v3 00/10] Convert grep to recurse in-process Junio C Hamano
2017-07-18 20:06       ` Brandon Williams
2017-08-02 19:49     ` [PATCH v4 " Brandon Williams
2017-08-02 19:49       ` [PATCH v4 01/10] repo_read_index: don't discard the index Brandon Williams
2017-08-02 19:49       ` [PATCH v4 02/10] repository: have the_repository use the_index Brandon Williams
2017-08-02 19:49       ` [PATCH v4 03/10] cache.h: add GITMODULES_FILE macro Brandon Williams
2017-08-02 19:49       ` [PATCH v4 04/10] config: add config_from_gitmodules Brandon Williams
2017-08-02 19:49       ` Brandon Williams [this message]
2017-08-02 19:49       ` [PATCH v4 06/10] submodule: remove fetch.recursesubmodules from submodule-config parsing Brandon Williams
2017-08-02 19:49       ` [PATCH v4 07/10] submodule: check for unstaged .gitmodules outside of config parsing Brandon Williams
2017-08-02 19:49       ` [PATCH v4 08/10] submodule: check for unmerged " Brandon Williams
2017-08-02 19:49       ` [PATCH v4 09/10] submodule: merge repo_read_gitmodules and gitmodules_config Brandon Williams
2017-08-02 19:49       ` [PATCH v4 10/10] grep: recurse in-process using 'struct repository' Brandon Williams

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170802194923.88239-6-bmwill@google.com \
    --to=bmwill@google.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=jrnieder@gmail.com \
    --cc=sbeller@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).