On Thu, Aug 17, 2017 at 4:00 AM, Heiko Voigt <hvoigt@xxxxxxxxxx> wrote: > To make extending this logic later easier. > > Signed-off-by: Heiko Voigt <hvoigt@xxxxxxxxxx> > --- > I am quite sure I replicated the same logic but a few more eyes would be > appreciated. A code cleanup is appreciated! I thought Brandon had a series in flight doing a very similar cleanup here, but in master..pu there is nothing to be found. > Cheers Heiko The code looks good to me. Cheers! Stefan > > submodule.c | 55 +++++++++++++++++++++++++++---------------------------- > 1 file changed, 27 insertions(+), 28 deletions(-) > > diff --git a/submodule.c b/submodule.c > index 3ed78ac..a1011f4 100644 > --- a/submodule.c > +++ b/submodule.c > @@ -1171,6 +1171,21 @@ int submodule_touches_in_range(struct object_id *excl_oid, > return ret; > } > > +static int get_fetch_recurse_config(const struct submodule *submodule, int command_line_option) > +{ > + if (command_line_option != RECURSE_SUBMODULES_DEFAULT) > + return command_line_option; > + > + if (submodule && submodule->fetch_recurse != RECURSE_SUBMODULES_NONE) > + /* local config overrules everything except commandline */ > + return submodule->fetch_recurse; > + > + if (gitmodules_is_unmerged) > + return RECURSE_SUBMODULES_OFF; > + > + return config_fetch_recurse_submodules; > +} > + > struct submodule_parallel_fetch { > int count; > struct argv_array args; > @@ -1203,37 +1218,21 @@ static int get_next_submodule(struct child_process *cp, > if (!submodule) > submodule = submodule_from_name(&null_oid, ce->name); > > - 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) > - continue; > - if (submodule->fetch_recurse == > - RECURSE_SUBMODULES_ON_DEMAND) { > - if (!unsorted_string_list_lookup(&changed_submodule_names, > - submodule->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, > - submodule->name)) > - continue; > - default_argv = "on-demand"; > - } > - } > - } else if (spf->command_line_option == RECURSE_SUBMODULES_ON_DEMAND) { > - if (!unsorted_string_list_lookup(&changed_submodule_names, > + switch (get_fetch_recurse_config(submodule, spf->command_line_option)) > + { > + default: > + case RECURSE_SUBMODULES_DEFAULT: > + case RECURSE_SUBMODULES_ON_DEMAND: > + if (!submodule || !unsorted_string_list_lookup(&changed_submodule_names, > submodule->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", spf->work_tree, ce->name); > -- > 2.0.0.274.g6b2cd91 >