Subject: Re: What's cooking in git.git (Apr 2018, #03; Wed, 25)

From: Brandon Williams <[email-masked]>
Date: Wed, 25 Apr 2018 10:43:00 -0700

On 04/25, Ævar Arnfjörð Bjarmason wrote:
> > * bw/protocol-v2 (2018-03-15) 35 commits
> >   (merged to 'next' on 2018-04-11 at 23ee234a2c)
> >  + remote-curl: don't request v2 when pushing
> >  + remote-curl: implement stateless-connect command
> >  + http: eliminate "# service" line when using protocol v2
> >  + http: don't always add Git-Protocol header
> >  + http: allow providing extra headers for http requests
> >  + remote-curl: store the protocol version the server responded with
> >  + remote-curl: create copy of the service name
> >  + pkt-line: add packet_buf_write_len function
> >  + transport-helper: introduce stateless-connect
> >  + transport-helper: refactor process_connect_service
> >  + transport-helper: remove name parameter
> >  + connect: don't request v2 when pushing
> >  + connect: refactor git_connect to only get the protocol version once
> >  + fetch-pack: support shallow requests
> >  + fetch-pack: perform a fetch using v2
> >  + upload-pack: introduce fetch server command
> >  + push: pass ref prefixes when pushing
> >  + fetch: pass ref prefixes when fetching
> >  + ls-remote: pass ref prefixes when requesting a remote's refs
> >  + transport: convert transport_get_remote_refs to take a list of ref prefixes
> >  + transport: convert get_refs_list to take a list of ref prefixes
> >  + connect: request remote refs using v2
> >  + ls-refs: introduce ls-refs server command
> >  + serve: introduce git-serve
> >  + test-pkt-line: introduce a packet-line test helper
> >  + protocol: introduce enum protocol_version value protocol_v2
> >  + transport: store protocol version
> >  + connect: discover protocol version outside of get_remote_heads
> >  + connect: convert get_remote_heads to use struct packet_reader
> >  + transport: use get_refs_via_connect to get refs
> >  + upload-pack: factor out processing lines
> >  + upload-pack: convert to a builtin
> >  + pkt-line: add delim packet support
> >  + pkt-line: allow peeking a packet line without consuming it
> >  + pkt-line: introduce packet_read_with_status
> >  (this branch is used by bw/server-options.)
> >
> >  The beginning of the next-gen transfer protocol.
> >
> >  Will cook in 'next'.
> 
> With a month & 10 days of no updates & this looking stable it would be
> great to have it in master sooner than later to build on top of it in
> the 2.18 window.

I personally think that this series is ready to graduate to master but I
mentioned to Junio off-list that it might be a good idea to wait until
it has undergone a little more stress testing.  We've been in the
process of trying to get this rolled out to our internal server but due
to a few roadblocks and people being out of the office its taken a bit
longer than I would have liked to get it up and running.  I'm hoping in
another few days/a week I'll have some more data on live traffic.  At
that point I think I'll be more convinced that it will be safe to merge it.

I may be overly cautions but I'm hoping that we can get this right
without needing to do another protocol version bump for a very long
time.  Technically using v2 is hidden behind an "experimental" config
flag so we should still be able to tweak it after the fact if we
absolutely needed to, but I'd like to avoid that if necessary.

-- 
Brandon Williams