[RFC PATCH 5/7] fetch: submodule config
Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
---
builtin/fetch.c | 10 ++++++++--
submodule-config.c | 5 +++--
2 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/builtin/fetch.c b/builtin/fetch.c
index a5498646bf..29db219c68 100644
--- a/builtin/fetch.c
+++ b/builtin/fetch.c
@@ -1786,12 +1786,18 @@ int cmd_fetch(int argc, const char **argv, const char *prefix)
free(anon);
}
- fetch_config_from_gitmodules(&submodule_fetch_jobs_config,
- &recurse_submodules);
git_config(git_fetch_config, NULL);
argc = parse_options(argc, argv, prefix,
builtin_fetch_options, builtin_fetch_usage, 0);
+ if (recurse_submodules != RECURSE_SUBMODULES_OFF) {
+ int *sfjc = submodule_fetch_jobs_config == -1
+ ? &submodule_fetch_jobs_config : NULL;
+ int *rs = recurse_submodules == RECURSE_SUBMODULES_DEFAULT
+ ? &recurse_submodules : NULL;
+
+ fetch_config_from_gitmodules(sfjc, rs);
+ }
if (deepen_relative) {
if (deepen_relative < 0)
diff --git a/submodule-config.c b/submodule-config.c
index e175dfbc38..8d65273ed2 100644
--- a/submodule-config.c
+++ b/submodule-config.c
@@ -776,10 +776,11 @@ struct fetch_config {
static int gitmodules_fetch_config(const char *var, const char *value, void *cb)
{
struct fetch_config *config = cb;
- if (!strcmp(var, "submodule.fetchjobs")) {
+ if (!strcmp(var, "submodule.fetchjobs") && config->max_children) {
*(config->max_children) = parse_submodule_fetchjobs(var, value);
return 0;
- } else if (!strcmp(var, "fetch.recursesubmodules")) {
+ } else if (!strcmp(var, "fetch.recursesubmodules") &&
+ config->recurse_submodules) {
*(config->recurse_submodules) = parse_fetch_recurse_submodules_arg(var, value);
return 0;
}
--
2.28.0.163.g6104cc2f0b6-goog