From 492c6c46da7847370d8ce0e6d369ae62215b6f8e Mon Sep 17 00:00:00 2001 From: Brandon Williams Date: Thu, 3 Aug 2017 11:19:51 -0700 Subject: [PATCH] fetch: don't overlay config with submodule-config Don't rely on overlaying the repository's config on top of the submodule-config, instead query the repository's config directly for the fetch_recurse field. Signed-off-by: Brandon Williams Signed-off-by: Junio C Hamano --- builtin/fetch.c | 1 - submodule.c | 24 +++++++++++++++++------- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/builtin/fetch.c b/builtin/fetch.c index d84c26391c..3fe99073d3 100644 --- a/builtin/fetch.c +++ b/builtin/fetch.c @@ -1362,7 +1362,6 @@ int cmd_fetch(int argc, const char **argv, const char *prefix) if (recurse_submodules != RECURSE_SUBMODULES_OFF) { gitmodules_config(); - git_config(submodule_config, NULL); } if (all) { diff --git a/submodule.c b/submodule.c index 8a9b964ce8..59e3d0828f 100644 --- a/submodule.c +++ b/submodule.c @@ -1194,14 +1194,24 @@ static int get_next_submodule(struct child_process *cp, default_argv = "yes"; if (spf->command_line_option == RECURSE_SUBMODULES_DEFAULT) { - if (submodule && - submodule->fetch_recurse != - RECURSE_SUBMODULES_NONE) { - if (submodule->fetch_recurse == - RECURSE_SUBMODULES_OFF) + int fetch_recurse = RECURSE_SUBMODULES_NONE; + + if (submodule) { + char *key; + const char *value; + + fetch_recurse = submodule->fetch_recurse; + key = xstrfmt("submodule.%s.fetchRecurseSubmodules", submodule->name); + if (!repo_config_get_string_const(the_repository, key, &value)) { + fetch_recurse = parse_fetch_recurse_submodules_arg(key, value); + } + free(key); + } + + if (fetch_recurse != RECURSE_SUBMODULES_NONE) { + if (fetch_recurse == RECURSE_SUBMODULES_OFF) continue; - if (submodule->fetch_recurse == - RECURSE_SUBMODULES_ON_DEMAND) { + if (fetch_recurse == RECURSE_SUBMODULES_ON_DEMAND) { if (!unsorted_string_list_lookup(&changed_submodule_paths, ce->name)) continue; default_argv = "on-demand";