All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jonathan Nieder <jrnieder@gmail.com>
To: Jonathan Tan <jonathantanmy@google.com>
Cc: git@vger.kernel.org, gitster@pobox.com
Subject: Re: [PATCH v2 1/2] transport: warn if server options are unsupported
Date: Tue, 9 Apr 2019 13:45:25 -0700	[thread overview]
Message-ID: <20190409204525.GA92879@google.com> (raw)
In-Reply-To: <af3cc05324f53316eedb2f437789eacb24c11489.1554841624.git.jonathantanmy@google.com>

Hi,

Jonathan Tan wrote:

> Server options were added in commit 5e3548ef16 ("fetch: send server
> options when using protocol v2", 2018-04-24), supported only for
> protocol version 2. Add a warning if server options are specified for
> the user if a legacy protocol is used instead.
>
> An effort is made to avoid printing the same warning more than once by
> clearing transport->server_options after the warning, but this does not
> fully avoid double-printing (for example, when backfulling tags using
> another fetch with a non-reusable transport).
>
> Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
> ---
>  t/t5702-protocol-v2.sh | 17 +++++++++++++++++
>  transport.c            |  8 ++++++++
>  2 files changed, 25 insertions(+)

Thanks for writing this.  I'd be in favor of making this die().
Compare what we already do in push:

	if (args->push_options && !push_options_supported)
		die(_("the receiving end does not support push options"));

What happens in the case of push with protocol v0, where server options
are supported?

[...]
> --- a/transport.c
> +++ b/transport.c
> @@ -252,6 +252,12 @@ static int connect_setup(struct transport *transport, int for_push)
>  	return 0;
>  }
>  
> +static void warn_server_options_unsupported(struct transport *transport)
> +{
> +	warning(_("Ignoring server options because protocol version does not support it"));

nits:
- error and warning messages tend to use lowercase
- the user running into this may want to know how to switch to a better
  protocol version.  Is there e.g. a manpage we can point them to?

For example:

	fatal: server options require protocol version 2 or later
	hint: see protocol.version in "git help config" for more details

> +	transport->server_options = NULL;

Should this use a static to also warn only once in the tag-catchup case
you mentioned?

> +}
> +
>  /*
>   * Obtains the protocol version from the transport and writes it to
>   * transport->data->version, first connecting if not already connected.
> @@ -286,6 +292,7 @@ static struct ref *handshake(struct transport *transport, int for_push,
>  		break;
>  	case protocol_v1:
>  	case protocol_v0:
> +		warn_server_options_unsupported(transport);
>  		get_remote_heads(&reader, &refs,
>  				 for_push ? REF_NORMAL : 0,
>  				 &data->extra_have,
> @@ -363,6 +370,7 @@ static int fetch_refs_via_pack(struct transport *transport,
>  		break;
>  	case protocol_v1:
>  	case protocol_v0:
> +		warn_server_options_unsupported(transport);
>  		refs = fetch_pack(&args, data->fd, data->conn,

Looks like this only affects fetch, so the question above about push
is only about the commit message.

With whatever subset of the suggested changes makes sense,
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>

Thanks.

  reply	other threads:[~2019-04-09 20:45 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-04-05 20:44 [PATCH] clone: send server options when using protocol v2 Jonathan Tan
2019-04-06 11:57 ` Jonathan Nieder
2019-04-08 17:11   ` Jonathan Tan
2019-04-09 15:24     ` Junio C Hamano
2019-04-09 18:49       ` Jonathan Tan
2019-04-09 20:31 ` [PATCH v2 0/2] Server options when cloning Jonathan Tan
2019-04-09 20:31   ` [PATCH v2 1/2] transport: warn if server options are unsupported Jonathan Tan
2019-04-09 20:45     ` Jonathan Nieder [this message]
2019-04-10  3:51       ` Junio C Hamano
2019-04-09 20:31   ` [PATCH v2 2/2] clone: send server options when using protocol v2 Jonathan Tan
2019-04-09 20:46     ` Jonathan Nieder
2019-04-11 20:30 ` [PATCH v3 0/2] Server options when cloning Jonathan Tan
2019-04-11 20:30   ` [PATCH v3 1/2] transport: warn if server options are unsupported Jonathan Tan
2019-04-12  5:35     ` Junio C Hamano
2019-04-11 20:30   ` [PATCH v3 2/2] clone: send server options when using protocol v2 Jonathan Tan
2019-04-12 19:51 ` [PATCH v4 0/2] Server options when cloning Jonathan Tan
2019-04-12 19:51   ` [PATCH v4 1/2] transport: die if server options are unsupported Jonathan Tan
2019-04-12 20:12     ` SZEDER Gábor
2019-04-15  4:48       ` Re* " Junio C Hamano
2019-04-15  4:54         ` Junio C Hamano
2019-04-15  9:43         ` SZEDER Gábor
2019-04-12 19:51   ` [PATCH v4 2/2] clone: send server options when using protocol v2 Jonathan Tan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190409204525.GA92879@google.com \
    --to=jrnieder@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=jonathantanmy@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.