Subject: Re: [PATCH 2/3] cmd_push: pass "flags" pointer to config callback

From: Junio C Hamano <[email-masked]>
Date: Sun, 15 Feb 2015 23:05:57 -0800

Jeff King <[email-masked]> writes:

> This will let us manipulate any transport flags which have matching
> config options (there are none yet, but we will add one in
> the next patch).

Nice---this will later lets us do push.atomic if we really wanted
to, right?

> To be honest, the whole do_push is confusing to me. It seems like that
> should just be part of cmd_push.

Yeah, that part of the push callchain always confuses me every time
I look at it.  I think it was a consequence of how transport layer
was wedged into the existing codepath that only handled push that
called send-pack to unify the codepaths that push calls into
different transport backends, and we may have done it differently
and more cleanly if we were designing the push to transport to
backends from scratch.

>  builtin/push.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/builtin/push.c b/builtin/push.c
> index f558c2e..c25108f 100644
> --- a/builtin/push.c
> +++ b/builtin/push.c
> @@ -555,7 +555,7 @@ int cmd_push(int argc, const char **argv, const char *prefix)
>  	};
>  
>  	packet_trace_identity("push");
> -	git_config(git_push_config, NULL);
> +	git_config(git_push_config, &flags);
>  	argc = parse_options(argc, argv, prefix, options, push_usage, 0);
>  
>  	if (deleterefs && (tags || (flags & (TRANSPORT_PUSH_ALL | TRANSPORT_PUSH_MIRROR))))