Subject: Re: [PATCH] transport: no warning if no server wait-for-done

From: Junio C Hamano <[email-masked]>
Date: Mon, 09 Aug 2021 13:04:35 -0700

Jonathan Nieder <[email-masked]> writes:

>>> -	if (finish_command(&child)) {
>>> -		/*
>>> -		 * The information that push negotiation provides is useful but
>>> -		 * not mandatory.
>>> -		 */
>>> -		warning(_("push negotiation failed; proceeding anyway with push"));
>>> -	}
>>
>> Perhaps like "optional ancestry negotiation failed---pushing
>> normally" or some phrasing that assures the users that pushing
>> without negotiation is perfectly normal?
>
> The question is what the user will do with this information.
>
> Will they contact the service provider to ask them to turn on push
> negotiation?
>
> Will they turn off push negotiation because they don't want to waste a
> round trip?
>
> Does what they will do depend on _why_ push negotiation failed?  If it
> failed because the server didn't declare the capability and the user
> has set push.negotate to true to represent "I want to live in the
> future by using push negotiation wherever it's available", then the
> message is noise.  If it failed due to a bug, then the message is more
> relevant to the user --- e.g., should we use a different exit status
> to distinguish between these two cases?

I was hoping that the "child" command being run there gives enough
clue before the warning message so that the user would already know
(that is where my "assures the users" primarily comes from---even we
cannot hide that the negotiation poll has failed, the users would be
helped by being told that it is OK).

If "child" does not give enough clue to this codepath (via the exit
code) or to the end user (via error messages), we probably would
want to fix that for that approach to work.