To make extending this logic later easier. Signed-off-by: Heiko Voigt <hvoigt@xxxxxxxxxx> --- submodule.c | 50 +++++++++++++++++++++++++++----------------------- 1 file changed, 27 insertions(+), 23 deletions(-) diff --git a/submodule.c b/submodule.c index b603000..a6fe16e 100644 --- a/submodule.c +++ b/submodule.c @@ -737,6 +737,23 @@ static void calculate_changed_submodule_paths(void) submodule_config_cache_free(&submodule_config_cache); } +static int get_fetch_recurse_config(const char *name, int command_line_option) +{ + if (command_line_option != RECURSE_SUBMODULES_DEFAULT) + return command_line_option; + + struct string_list_item *fetch_recurse_submodules_option; + fetch_recurse_submodules_option = unsorted_string_list_lookup(&config_fetch_recurse_submodules_for_name, name); + if (fetch_recurse_submodules_option) + /* local config overrules everything except commandline */ + return (intptr_t)fetch_recurse_submodules_option->util; + + if (gitmodules_is_unmerged) + return RECURSE_SUBMODULES_OFF; + + return config_fetch_recurse_submodules; +} + int fetch_populated_submodules(const struct argv_array *options, const char *prefix, int command_line_option, int quiet) @@ -781,32 +798,19 @@ int fetch_populated_submodules(const struct argv_array *options, if (name_for_path) name = name_for_path->util; - default_argv = "yes"; - if (command_line_option == RECURSE_SUBMODULES_DEFAULT) { - struct string_list_item *fetch_recurse_submodules_option; - fetch_recurse_submodules_option = unsorted_string_list_lookup(&config_fetch_recurse_submodules_for_name, name); - if (fetch_recurse_submodules_option) { - if ((intptr_t)fetch_recurse_submodules_option->util == RECURSE_SUBMODULES_OFF) - continue; - if ((intptr_t)fetch_recurse_submodules_option->util == RECURSE_SUBMODULES_ON_DEMAND) { - if (!unsorted_string_list_lookup(&changed_submodule_names, name)) - continue; - default_argv = "on-demand"; - } - } else { - if ((config_fetch_recurse_submodules == RECURSE_SUBMODULES_OFF) || - gitmodules_is_unmerged) - continue; - if (config_fetch_recurse_submodules == RECURSE_SUBMODULES_ON_DEMAND) { - if (!unsorted_string_list_lookup(&changed_submodule_names, name)) - continue; - default_argv = "on-demand"; - } - } - } else if (command_line_option == RECURSE_SUBMODULES_ON_DEMAND) { + switch (get_fetch_recurse_config(name, command_line_option)) { + default: + case RECURSE_SUBMODULES_DEFAULT: + case RECURSE_SUBMODULES_ON_DEMAND: if (!unsorted_string_list_lookup(&changed_submodule_names, name)) continue; default_argv = "on-demand"; + break; + case RECURSE_SUBMODULES_ON: + default_argv = "yes"; + break; + case RECURSE_SUBMODULES_OFF: + continue; } strbuf_addf(&submodule_path, "%s/%s", work_tree, ce->name); -- 1.8.2.rc0.25.g5062c01 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html