Re: [RFC PATCH 2/2] submodule: simplify decision tree whether to or not to fetch

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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
>



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux