Junio C Hamano <gits...@pobox.com> writes:

> base to show an incremental improvement, but here is how I would do
> the "code" part.
>
>  builtin/push.c | 22 ++++++++++++++++++----
>  1 file changed, 18 insertions(+), 4 deletions(-)
>
> diff --git a/builtin/push.c b/builtin/push.c
> index 03846e8379..89ef029c67 100644
> --- a/builtin/push.c
> +++ b/builtin/push.c
> @@ -32,6 +32,8 @@ static const char **refspec;
>  static int refspec_nr;
>  static int refspec_alloc;
>  
> +static struct string_list push_options_config = STRING_LIST_INIT_DUP;
> +
>  static void add_refspec(const char *ref)
>  {
>       refspec_nr++;
> @@ -503,6 +505,13 @@ static int git_push_config(const char *k, const char *v, 
> void *cb)
>               int val = git_config_bool(k, v) ?
>                       RECURSE_SUBMODULES_ON_DEMAND : RECURSE_SUBMODULES_OFF;
>               recurse_submodules = val;
> +     } else if (!strcmp(k, "push.pushoption")) {
> +             if (!v)
> +                     return config_error_nonbool(k);
> +             else if (!*v)
> +                     string_list_clear(&push_options_config, 0);
> +             else
> +                     string_list_append(&push_options_config, v);

Here needs to be

                return 0;

as there is no point in falling through to call
git_default_config().

>       }
>  
>       return git_default_config(k, v, NULL);

Reply via email to