> Does the code behave sensibly when the --server-option=... option is
> given and
>
> (a) the given option is not understood by the other side that talks
> protocol v2? Or
>
> (b) it turns out that the other side does not talk protocol v2?
>
> In the former case, I would expect that there would be a way to
> respond with a failure for the other side and "git clone" should
> notice and respond by die()-ing at the end.
Right now, the server ignores it (it collects them as "keys" in
process_request() in serve.c and then passes them to the individual
commands, but they don't do anything about it).
Right now it's documented as:
-o <option>::
--server-option=<option>::
Transmit the given string to the server when communicating using
protocol version 2. The given string must not contain a NUL or
LF
character.
When multiple `--server-option=<option>` are given, they are all
sent to the other side in the order listed on the command line.
I'm inclined to add:
The server's handling of server options, including unknown ones, is
server-specific.
> In the latter case, I would expect at least that a warning about
> accepted but ignored server-option to be given, or "git clone" to
> fail with an error "cannot honor the server-option".
Right now there's no warning, but I'll add one in the next reroll to
both "fetch" and "clone".
> If the code does not match the above expectations, at least that
> should be documented, I think. If "git fetch" shares the same
> issue, this would be a good time to address it, too.