Re: [PATCH v3 0/8] Hiding refs
- From
Jeff King <peff@peff.net>
- Date
- Mar 11, 2014, 20:36 UTC
- Message-ID
- <20140311203650.GA31173@sigill.intra.peff.net>
- In-Reply-To
- <xmqq4n34pjnw.fsf@gitster.dls.corp.google.com>
On Tue, Mar 11, 2014 at 01:25:23PM -0700, Junio C Hamano wrote:
Show 21 quoted lines
> > Yeah, good idea. I might be misremembering some complications, but we > > can probably do it with: > > > > 1. Teach the client to send an "advertise-symrefs" flag before the ref > > advertisement. > > > > 2. Teach the server to include symrefs in the ref advertisement; we > > can invent a new syntax because we know the client has asked for > > it. > > I was thinking more about the underlying protocol, not advertisement > in particular, and I think we came to the same conclusion. > > The capability advertisement deserves to have its own separate > packet message type, when both sides say that they understand it, so > that we do not have to be limited by the pkt-line length limit. We > could do one message per capability, and at the same time can lift > the traditional "capability hidden after the NUL is purged every > time, so we need to repeat them if we want to later change it, > because that is how older clients and servers use that information" > insanity, for example.
So this may be entering the "more radical changes" realm I mentioned earlier.
If the client is limited to setting a few flags, then something like http can get away with:
GET foo.git/info/refs?service=git-upload-pack&advertise-symrefs&refspec=refs/heads/*
And it does not need to worry about upload-pack2 at all. Either the server recognizes and acts on them, or it ignores them.
But given that we do not have such a magic out-of-band method for passing values over ssh and git, maybe it is not worth worrying about. Http can move to upload-pack2 along with the rest.
One thing that _is_ worth considering for http is how the protocol starts. We do not want to introduce an extra http round-trip to the protocol if we can help it. If the initial GET becomes a POST, then it could pass along the pkt-line of client capabilities with the initial request, and the server would respond with the ref advertisement as usual.
-Peff