Am 10/3/2012 21:41, schrieb Shawn Pearce:
On Wed, Oct 3, 2012 at 11:55 AM, Jeff King [off-list ref] wrote:
quoted
On Wed, Oct 03, 2012 at 11:53:35AM -0700, Junio C Hamano wrote:
quoted
Jeff King [off-list ref] writes:
quoted
quoted
Has there been any work on extending the protocol so that the client
tells the server what refs it's interested in?
I don't think so. It would be hard to do in a backwards-compatible way,
because the advertisement is the first thing the server says, before it
has negotiated any capabilities with the client at all.
That is being discussed but hasn't surfaced on the list.
Out of curiosity, how are you thinking about triggering such a new
behavior in a backwards-compatible way? Invoke git-upload-pack2, and
fall back to reconnecting to start git-upload-pack if it fails?
Basically, yes. New clients connect for git-upload-pack2. Over git://
the remote peer will just close the TCP socket with no messages. The
client can fallback to git-upload-pack and try again. Over SSH a
similar thing will happen in the sense there is no data output from
the remote side, so the client can try again.
These connections are bidirectional. Upload-pack can just start
advertising refs in the "v1" way and announce a "v2" capability and listen
for response in parallel. A v2 capable client can start sending "wants" or
some other signal as soon as it sees the "v2" capability. Upload-pack,
which was listening for responses in parallel, can interrupt its
advertisements and continue with v2 protocol from here.
This sounds so simple (not the implementation, of course) - I must be
missing something.
-- Hannes