Re: Request for detailed documentation of git pack protocol
- From
Shawn O. Pearce <spearce@spearce.org>
- Date
- Jun 3, 2009, 22:04 UTC
- Message-ID
- <20090603220456.GQ3355@spearce.org>
- In-Reply-To
- <200906040004.18594.jnareb@gmail.com>
Jakub Narebski <jnareb@gmail.com> wrote:
Show 6 quoted lines
> So do I understand correctly that capabilities are governed by the > following generic rules: > > 1. Server sends space separated list of capabilities it support. It > MUST NOT send capabilities it *does not* support. It MAY NOT send > "include-tag" if there are no tag objects (or is it SHOULD NOT?).
The server SHOULD send include-tag, if it supports it, irregardless of whether or not there are tags available. Its just easier to code the server to send the R@!* line up front based on the software version, and not the repository content.
> 2. Client sends space separated list of capabilities it wants. It SHOULD > (or perhaps it is MAY?) send subset of server capabilities, i.e do > not send capabilities served does not advertise.
It SHOULD send a subset of server capabilities.
> 3. Server MUST ignore capabilities it does not understand.
True.
> Server MUST NOT ignore capabilities (or SHOULD NOT only?) that > client requested and server advertised.
True, MUST NOT. Otherwise you will have protocol errors.
However, include-tag can be SHOULD NOT... since the client must be able to recover from it anyway.
> I know that client MUST send only maximum of one of "side-band" and > "side-band-64k", but how should server reacts if client sends both? > Should it use "side-band-64k"?
MUST favor side-band-64k if client requests both.
-- Shawn.