Subject: Re: [PATCH 5/6] fetch: teach independent negotiation (no packfile)

From: Junio C Hamano <[email-masked]>
Date: Thu, 08 Apr 2021 22:41:53 -0700

Jonathan Tan <[email-masked]> writes:

> There are 2 code paths that do not go through fetch_refs_via_pack() that
> needed to be individually excluded: the bundle transport (excluded
> through requiring smart_options, which the bundle transport doesn't
> support) and transport helpers that do not support takeover.
> Fortunately, none of these support protocol v2.

I am a bit puzzled by this mention of "Fortunately".  If one says
"this shiny new feature only works with protocol v2" and "transport
X does not support protocol v2", doesn't it imply that the shiny new
feature cannot be used with the transport X, which is unfortunate?

I can understand "while interacting with the bundle transport, you
cannot do independent negotiation, but there is nothing to negotiate
with a static file that is a bundle anyway, so nothing is lost" as
an explanation, though.

>  Documentation/technical/protocol-v2.txt |  8 +++
>  builtin/fetch.c                         | 27 +++++++-
>  fetch-pack.c                            | 89 +++++++++++++++++++++++--
>  fetch-pack.h                            | 11 +++
>  object.h                                |  2 +-
>  t/t5701-git-serve.sh                    |  2 +-
>  t/t5702-protocol-v2.sh                  | 89 +++++++++++++++++++++++++
>  transport-helper.c                      | 10 +++
>  transport.c                             | 30 +++++++--
>  transport.h                             |  6 ++
>  upload-pack.c                           | 18 +++--
>  11 files changed, 275 insertions(+), 17 deletions(-)

It is a bit surprising that there isn't much code removed, as I
expected that we'd be factoring out and reusing existing code used
in negotiation for fetching into a new helper function (hence the
existing codepath would lose a lot of code to be replaced by a call
to a new helper function), but that is apparently not what is going
on.

I'll have to revisit this step and the next step tomorrow.

Thanks.