Subject: Re: [PATCH v3 01/11] protocol v2: add server-side "bundle-uri" skeleton

From: Victoria Dye <[email-masked]>
Date: Mon, 5 Dec 2022 15:31:33 -0800

Ævar Arnfjörð Bjarmason via GitGitGadget wrote:
> diff --git a/Documentation/gitprotocol-v2.txt b/Documentation/gitprotocol-v2.txt
> index 59bf41cefb9..10bd2d40cec 100644
> --- a/Documentation/gitprotocol-v2.txt
> +++ b/Documentation/gitprotocol-v2.txt
> @@ -578,6 +578,207 @@ and associated requested information, each separated by a single space.
>  
>  	obj-info = obj-id SP obj-size
>  
> +bundle-uri
> +~~~~~~~~~~

Apologies for not following up on this patch when you updated it for v2.
This version is much clearer in describing the bundle URI command protocol,
especially how the 'bundle.*' config is used:

> +When the client issues a `command=bundle-uri` request, the response is a
> +list of key-value pairs provided as packet lines with value
> +`<key>=<value>`. Each `<key>` should be interpreted as a config key from
> +the `bundle.*` namespace to construct a list of bundles. These keys are
> +grouped by a `bundle.<id>.` subsection, where each key corresponding to a
> +given `<id>` contributes attributes to the bundle defined by that `<id>`.
> +See linkgit:git-config[1] for the specific details of these keys and how
> +the Git client will interpret their values.
> +
> +Clients MUST parse the line according to the above format, lines that do
> +not conform to the format SHOULD be discarded. The user MAY be warned in
> +such a case.
> +

and the response types/formats:

> +URI CONTENTS::
> +The content at the advertised URIs MUST be one of two types.
> ++
> +The advertised URI may contain a bundle file that `git bundle verify`
> +would accept. I.e. they MUST contain one or more reference tips for
> +use by the client, MUST indicate prerequisites (in any) with standard
> +"-" prefixes, and MUST indicate their "object-format", if
> +applicable.
> ++
> +The advertised URI may alternatively contain a plaintext file that `git
> +config --list` would accept (with the `--file` option). The key-value
> +pairs in this list are in the `bundle.*` namespace (see
> +linkgit:git-config[1]).
> +

Regarding your point about examples in [1]: after reading the remainder of
the series, I agree that the test cases in the later patches do a good job
of documenting the behavior.

Thanks!

[1] https://lore.kernel.org/git/[email-masked]/