git@vger.kernel.org mailing list mirror (one of many)
 help / Atom feed
From: Brandon Williams <bmwill@google.com>
To: Jeff King <peff@peff.net>
Cc: git@vger.kernel.org, sbeller@google.com, gitster@pobox.com,
	jrnieder@gmail.com, stolee@gmail.com, git@jeffhostetler.com,
	pclouds@gmail.com
Subject: Re: [PATCH v3 12/35] serve: introduce git-serve
Date: Fri, 23 Feb 2018 13:45:57 -0800
Message-ID: <20180223214557.GF234838@google.com> (raw)
In-Reply-To: <20180222093327.GA12442@sigill.intra.peff.net>

On 02/22, Jeff King wrote:
> On Tue, Feb 06, 2018 at 05:12:49PM -0800, Brandon Williams wrote:
> 
> > +In protocol v2 communication is command oriented.  When first contacting a
> > +server a list of capabilities will advertised.  Some of these capabilities
> > +will be commands which a client can request be executed.  Once a command
> > +has completed, a client can reuse the connection and request that other
> > +commands be executed.
> 
> If I understand this correctly, we'll potentially have a lot more
> round-trips between the client and server (one per "command"). And for
> git-over-http, each one will be its own HTTP request?
> 
> We've traditionally tried to minimize HTTP requests, but I guess it's
> not too bad if we can keep the connection open in most cases. Then we
> just suffer some extra framing bytes, but we don't have to re-establish
> the TCP connection each time.
> 
> I do wonder if the extra round trips will be noticeable in high-latency
> conditions. E.g., if I'm 200ms away, converting the current
> ref-advertisement spew to "capabilities, then the client asks for refs,
> then we spew the refs" is going to cost an extra 200ms, even if the
> fetch just ends up being a noop. I'm not sure how bad that is in the
> grand scheme of things (after all, the TCP handshake involves some
> round-trips, too).

I think this is the price of extending the protocol in a backward
compatible way.  If we don't want to be backwards compatible (allowing
for graceful fallback to v1) then we could design this differently.
Even so we're not completely out of luck just yet.

Back when I introduced the GIT_PROTOCOL side-channel I was able to
demonstrate that arbitrary data could be sent to the server and it would
only respect the stuff it knows about.  This means that we can do a
follow up to v2 at some point to introduce an optimization where we can
stuff a request into GIT_PROTOCOL and short-circuit the first round-trip
if the server supports it.

> 
> > + Capability Advertisement
> > +--------------------------
> > +
> > +A server which decides to communicate (based on a request from a client)
> > +using protocol version 2, notifies the client by sending a version string
> > +in its initial response followed by an advertisement of its capabilities.
> > +Each capability is a key with an optional value.  Clients must ignore all
> > +unknown keys.  Semantics of unknown values are left to the definition of
> > +each key.  Some capabilities will describe commands which can be requested
> > +to be executed by the client.
> > +
> > +    capability-advertisement = protocol-version
> > +			       capability-list
> > +			       flush-pkt
> > +
> > +    protocol-version = PKT-LINE("version 2" LF)
> > +    capability-list = *capability
> > +    capability = PKT-LINE(key[=value] LF)
> > +
> > +    key = 1*CHAR
> > +    value = 1*CHAR
> > +    CHAR = 1*(ALPHA / DIGIT / "-" / "_")
> > +
> > +A client then responds to select the command it wants with any particular
> > +capabilities or arguments.  There is then an optional section where the
> > +client can provide any command specific parameters or queries.
> > +
> > +    command-request = command
> > +		      capability-list
> > +		      (command-args)
> > +		      flush-pkt
> > +    command = PKT-LINE("command=" key LF)
> > +    command-args = delim-pkt
> > +		   *arg
> > +    arg = 1*CHAR
> 
> For a single stateful TCP connection like git:// or git-over-ssh, the
> client would get the capabilities once and then issue a series of
> commands. For git-over-http, how does it work?
> 
> The client speaks first in HTTP, so we'd first make a request to get
> just the capabilities from the server? And then proceed from there with
> a series of requests, assuming that the capabilities for each server we
> subsequently contact are the same? That's probably reasonable (and
> certainly the existing http protocol makes that capabilities
> assumption).
> 
> I don't see any documentation on how this all works with http. But

I can add in a bit for the initial request when using http, but the rest
of it should function the same.

> reading patch 34, it looks like we just do the usual
> service=git-upload-pack request (with the magic request for v2), and
> then the server would send us capabilities. Which follows my line of
> thinking in the paragraph above.

Yes this is exactly how it should work.  First we make an info/refs
request and if the server speaks v2 then instead of a refs request we
should get back a capability listing.  Then subsequent requests are made
assuming the capabilities are the same like we've done with the
existing protocol.

The great thing about this is that from the POV of the git-client, it
doesn't care if its speaking using the git://, ssh://, file://, or
http:// transport; it's all the same protocol.  In my next re-roll I'll
even drop the "# service" bit from the http server response and then the
responses will truly be identical in all cases.

-- 
Brandon Williams

  reply index

Thread overview: 361+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-03  0:18 [PATCH 00/26] protocol version 2 Brandon Williams
2018-01-03  0:18 ` [PATCH 01/26] pkt-line: introduce packet_read_with_status Brandon Williams
2018-01-03 19:27   ` Stefan Beller
2018-01-05 23:41     ` Brandon Williams
2018-01-09 18:04   ` Jonathan Tan
2018-01-09 19:28     ` Brandon Williams
2018-01-03  0:18 ` [PATCH 02/26] pkt-line: introduce struct packet_reader Brandon Williams
2018-01-09 18:08   ` Jonathan Tan
2018-01-09 19:19     ` Brandon Williams
2018-01-03  0:18 ` [PATCH 03/26] pkt-line: add delim packet support Brandon Williams
2018-01-03  0:18 ` [PATCH 04/26] upload-pack: convert to a builtin Brandon Williams
2018-01-03 20:33   ` Stefan Beller
2018-01-03 20:39     ` Brandon Williams
2018-02-21 21:47       ` Jonathan Nieder
2018-02-21 23:35         ` Junio C Hamano
2018-01-03  0:18 ` [PATCH 05/26] upload-pack: factor out processing lines Brandon Williams
2018-01-03 20:38   ` Stefan Beller
2018-01-03  0:18 ` [PATCH 06/26] transport: use get_refs_via_connect to get refs Brandon Williams
2018-01-03 21:20   ` Stefan Beller
2018-01-03  0:18 ` [PATCH 07/26] connect: convert get_remote_heads to use struct packet_reader Brandon Williams
2018-01-09 18:27   ` Jonathan Tan
2018-01-09 19:09     ` Brandon Williams
2018-01-03  0:18 ` [PATCH 08/26] connect: discover protocol version outside of get_remote_heads Brandon Williams
2018-01-03  0:18 ` [PATCH 09/26] transport: store protocol version Brandon Williams
2018-01-09 18:41   ` Jonathan Tan
2018-01-09 19:15     ` Brandon Williams
2018-01-03  0:18 ` [PATCH 10/26] protocol: introduce enum protocol_version value protocol_v2 Brandon Williams
2018-01-03  0:18 ` [PATCH 11/26] serve: introduce git-serve Brandon Williams
2018-01-09 20:24   ` Jonathan Tan
2018-01-09 22:16     ` Brandon Williams
2018-01-09 22:28       ` Jonathan Tan
2018-01-09 22:34         ` Brandon Williams
2018-02-01 18:48   ` Jeff Hostetler
2018-02-01 18:57     ` Stefan Beller
2018-02-01 19:09       ` Jeff Hostetler
2018-02-01 20:05         ` Brandon Williams
2018-02-01 19:45       ` Randall S. Becker
2018-02-01 20:08         ` Brandon Williams
2018-02-01 20:37           ` Randall S. Becker
2018-02-01 20:50             ` Stefan Beller
2018-01-03  0:18 ` [PATCH 12/26] ls-refs: introduce ls-refs server command Brandon Williams
2018-01-04  0:17   ` Stefan Beller
2018-01-05 23:49     ` Brandon Williams
2018-01-09 20:50   ` Jonathan Tan
2018-01-16 19:23     ` Brandon Williams
2018-02-01 19:16   ` Jeff Hostetler
2018-02-07  0:55     ` Brandon Williams
2018-01-03  0:18 ` [PATCH 13/26] connect: request remote refs using v2 Brandon Williams
2018-01-09 22:24   ` Jonathan Tan
2018-01-03  0:18 ` [PATCH 14/26] transport: convert get_refs_list to take a list of ref patterns Brandon Williams
2018-01-03  0:18 ` [PATCH 15/26] transport: convert transport_get_remote_refs " Brandon Williams
2018-01-03  0:18 ` [PATCH 16/26] ls-remote: pass ref patterns when requesting a remote's refs Brandon Williams
2018-01-03  0:18 ` [PATCH 17/26] fetch: pass ref patterns when fetching Brandon Williams
2018-01-03  0:18 ` [PATCH 18/26] push: pass ref patterns when pushing Brandon Williams
2018-01-03  0:18 ` [PATCH 19/26] upload-pack: introduce fetch server command Brandon Williams
2018-01-04  1:07   ` Stefan Beller
2018-01-03  0:18 ` [PATCH 20/26] fetch-pack: perform a fetch using v2 Brandon Williams
2018-01-04  1:23   ` Stefan Beller
2018-01-05 23:55     ` Brandon Williams
2018-01-10  0:05   ` Jonathan Tan
2018-01-03  0:18 ` [PATCH 21/26] transport-helper: remove name parameter Brandon Williams
2018-01-03  0:18 ` [PATCH 22/26] transport-helper: refactor process_connect_service Brandon Williams
2018-01-03  0:18 ` [PATCH 23/26] transport-helper: introduce connect-half-duplex Brandon Williams
2018-01-03  0:18 ` [PATCH 24/26] pkt-line: add packet_buf_write_len function Brandon Williams
2018-01-03  0:18 ` [PATCH 25/26] remote-curl: create copy of the service name Brandon Williams
2018-01-03  0:18 ` [PATCH 26/26] remote-curl: implement connect-half-duplex command Brandon Williams
2018-01-10  0:10   ` Jonathan Tan
2018-01-10 17:57   ` Jonathan Tan
2018-01-11  1:09     ` Brandon Williams
2018-01-09 17:55 ` [PATCH 00/26] protocol version 2 Jonathan Tan
2018-01-11  0:23   ` Brandon Williams
2018-01-25 23:58 ` [PATCH v2 00/27] " Brandon Williams
2018-01-25 23:58   ` [PATCH v2 01/27] pkt-line: introduce packet_read_with_status Brandon Williams
2018-01-25 23:58   ` [PATCH v2 02/27] pkt-line: introduce struct packet_reader Brandon Williams
2018-01-25 23:58   ` [PATCH v2 03/27] pkt-line: add delim packet support Brandon Williams
2018-01-25 23:58   ` [PATCH v2 04/27] upload-pack: convert to a builtin Brandon Williams
2018-01-25 23:58   ` [PATCH v2 05/27] upload-pack: factor out processing lines Brandon Williams
2018-01-26 20:12     ` Stefan Beller
2018-01-26 21:33       ` Brandon Williams
2018-01-31 14:08         ` Derrick Stolee
2018-01-25 23:58   ` [PATCH v2 06/27] transport: use get_refs_via_connect to get refs Brandon Williams
2018-01-25 23:58   ` [PATCH v2 07/27] connect: convert get_remote_heads to use struct packet_reader Brandon Williams
2018-01-25 23:58   ` [PATCH v2 08/27] connect: discover protocol version outside of get_remote_heads Brandon Williams
2018-01-31 14:40     ` Derrick Stolee
2018-02-01 17:57       ` Brandon Williams
2018-01-25 23:58   ` [PATCH v2 09/27] transport: store protocol version Brandon Williams
2018-01-31 14:45     ` Derrick Stolee
2018-01-25 23:58   ` [PATCH v2 10/27] protocol: introduce enum protocol_version value protocol_v2 Brandon Williams
2018-01-31 14:54     ` Derrick Stolee
2018-02-02 22:44       ` Brandon Williams
2018-02-05 14:14         ` Derrick Stolee
2018-01-25 23:58   ` [PATCH v2 11/27] test-pkt-line: introduce a packet-line test helper Brandon Williams
2018-01-25 23:58   ` [PATCH v2 12/27] serve: introduce git-serve Brandon Williams
2018-01-26 10:39     ` Duy Nguyen
2018-02-27  5:46       ` Jonathan Nieder
2018-01-31 15:39     ` Derrick Stolee
2018-01-25 23:58   ` [PATCH v2 13/27] ls-refs: introduce ls-refs server command Brandon Williams
2018-01-26 22:20     ` Stefan Beller
2018-02-02 22:31       ` Brandon Williams
2018-01-25 23:58   ` [PATCH v2 14/27] connect: request remote refs using v2 Brandon Williams
2018-01-31 15:22     ` Derrick Stolee
2018-01-31 20:10       ` Eric Sunshine
2018-01-31 22:14         ` Derrick Stolee
2018-01-25 23:58   ` [PATCH v2 15/27] transport: convert get_refs_list to take a list of ref patterns Brandon Williams
2018-01-25 23:58   ` [PATCH v2 16/27] transport: convert transport_get_remote_refs " Brandon Williams
2018-01-25 23:58   ` [PATCH v2 17/27] ls-remote: pass ref patterns when requesting a remote's refs Brandon Williams
2018-01-25 23:58   ` [PATCH v2 18/27] fetch: pass ref patterns when fetching Brandon Williams
2018-01-25 23:58   ` [PATCH v2 19/27] push: pass ref patterns when pushing Brandon Williams
2018-01-25 23:58   ` [PATCH v2 20/27] upload-pack: introduce fetch server command Brandon Williams
2018-01-25 23:58   ` [PATCH v2 21/27] fetch-pack: perform a fetch using v2 Brandon Williams
2018-01-25 23:58   ` [PATCH v2 22/27] transport-helper: remove name parameter Brandon Williams
2018-01-25 23:58   ` [PATCH v2 23/27] transport-helper: refactor process_connect_service Brandon Williams
2018-01-25 23:58   ` [PATCH v2 24/27] transport-helper: introduce stateless-connect Brandon Williams
2018-01-25 23:58   ` [PATCH v2 25/27] pkt-line: add packet_buf_write_len function Brandon Williams
2018-01-25 23:58   ` [PATCH v2 26/27] remote-curl: create copy of the service name Brandon Williams
2018-01-25 23:58   ` [PATCH v2 27/27] remote-curl: implement stateless-connect command Brandon Williams
2018-01-31 16:00   ` [PATCH v2 00/27] protocol version 2 Derrick Stolee
2018-02-07  0:58     ` Brandon Williams
2018-02-01 19:40   ` Jeff Hostetler
2018-02-07  1:12   ` [PATCH v3 00/35] " Brandon Williams
2018-02-07  1:12     ` [PATCH v3 01/35] pkt-line: introduce packet_read_with_status Brandon Williams
2018-02-13  0:25       ` Jonathan Nieder
2018-02-07  1:12     ` [PATCH v3 02/35] pkt-line: introduce struct packet_reader Brandon Williams
2018-02-13  0:49       ` Jonathan Nieder
2018-02-27 18:14         ` Brandon Williams
2018-02-27 19:20           ` Jonathan Nieder
2018-02-27  5:57       ` Jonathan Nieder
2018-02-27  6:12         ` Jonathan Nieder
2018-02-07  1:12     ` [PATCH v3 03/35] pkt-line: add delim packet support Brandon Williams
2018-02-22 19:13       ` Stefan Beller
2018-02-22 19:37         ` Brandon Williams
2018-02-07  1:12     ` [PATCH v3 04/35] upload-pack: convert to a builtin Brandon Williams
2018-02-21 21:44       ` Jonathan Tan
2018-02-22  9:58         ` Jeff King
2018-02-22 18:07           ` Brandon Williams
2018-02-22 18:14             ` Jeff King
2018-02-22 19:38               ` Jonathan Nieder
2018-02-22 20:19                 ` Jeff King
2018-02-22 20:21                   ` Jeff King
2018-02-22 21:26                     ` Jonathan Nieder
2018-02-22 21:44                       ` Jeff King
2018-03-12 22:43                         ` Jonathan Nieder
2018-03-12 23:28                           ` Jeff King
2018-03-12 23:37                             ` Jonathan Nieder
2018-03-12 23:52                               ` Jeff King
2018-02-23 21:09                     ` Brandon Williams
2018-03-03  4:24                       ` Jeff King
2018-02-22 21:24                   ` Jonathan Nieder
2018-02-22 21:44                     ` Jeff King
2018-02-22 22:21                       ` Jeff King
2018-02-22 22:42                         ` Jonathan Nieder
2018-02-22 23:05                           ` Jeff King
2018-02-22 23:23                             ` Jeff King
2018-02-07  1:12     ` [PATCH v3 05/35] upload-pack: factor out processing lines Brandon Williams
2018-02-22 19:31       ` Stefan Beller
2018-02-22 19:39         ` Brandon Williams
2018-02-07  1:12     ` [PATCH v3 06/35] transport: use get_refs_via_connect to get refs Brandon Williams
2018-02-27  6:08       ` Jonathan Nieder
2018-02-27 18:17         ` Brandon Williams
2018-02-27 19:25           ` Jonathan Nieder
2018-02-27 19:46             ` Brandon Williams
2018-02-07  1:12     ` [PATCH v3 07/35] connect: convert get_remote_heads to use struct packet_reader Brandon Williams
2018-02-22 19:52       ` Stefan Beller
2018-02-22 20:09       ` Stefan Beller
2018-02-23 21:30         ` Brandon Williams
2018-02-23 21:48           ` Stefan Beller
2018-02-23 22:56             ` Brandon Williams
2018-02-07  1:12     ` [PATCH v3 08/35] connect: discover protocol version outside of get_remote_heads Brandon Williams
2018-02-21 22:11       ` Jonathan Tan
2018-02-22 18:17         ` Brandon Williams
2018-02-22 19:22           ` Jonathan Tan
2018-02-07  1:12     ` [PATCH v3 09/35] transport: store protocol version Brandon Williams
2018-02-07  1:12     ` [PATCH v3 10/35] protocol: introduce enum protocol_version value protocol_v2 Brandon Williams
2018-02-27  6:18       ` Jonathan Nieder
2018-02-27 18:41         ` Brandon Williams
2018-02-07  1:12     ` [PATCH v3 11/35] test-pkt-line: introduce a packet-line test helper Brandon Williams
2018-02-22 20:40       ` Stefan Beller
2018-02-23 21:22         ` Brandon Williams
2018-03-03  4:25           ` Jeff King
2018-03-05 18:48             ` Brandon Williams
2018-02-07  1:12     ` [PATCH v3 12/35] serve: introduce git-serve Brandon Williams
2018-02-21 22:45       ` Jonathan Tan
2018-02-23 21:33         ` Brandon Williams
2018-02-27 18:05           ` Jonathan Tan
2018-02-27 18:34             ` Brandon Williams
2018-02-22  9:33       ` Jeff King
2018-02-23 21:45         ` Brandon Williams [this message]
2018-03-03  4:33           ` Jeff King
2018-03-05 18:43             ` Brandon Williams
2018-03-05 20:52               ` Jeff King
2018-03-05 21:36                 ` Jonathan Nieder
2018-03-06  6:29                   ` Jeff King
2018-03-12 23:46                     ` Jeff King
2018-02-07  1:12     ` [PATCH v3 13/35] ls-refs: introduce ls-refs server command Brandon Williams
2018-02-22  9:48       ` Jeff King
2018-02-23  0:45         ` Brandon Williams
2018-02-24  0:19           ` Brandon Williams
2018-02-24  4:03             ` Jeff King
2018-02-24  4:01           ` Jeff King
2018-02-26 22:33             ` Junio C Hamano
2018-02-27  0:02             ` Ævar Arnfjörð Bjarmason
2018-02-27  5:15               ` Jonathan Nieder
2018-02-27 18:02                 ` Brandon Williams
2018-02-07  1:12     ` [PATCH v3 14/35] connect: request remote refs using v2 Brandon Williams
2018-02-21 22:54       ` Jonathan Tan
2018-02-22 18:19         ` Brandon Williams
2018-02-22 18:26           ` Jeff King
2018-02-22 19:25             ` Jonathan Tan
2018-02-27  6:21               ` Jonathan Nieder
2018-02-27 21:58                 ` Junio C Hamano
2018-02-27 22:04                   ` Jeff King
2018-02-27 22:10                     ` Eric Sunshine
2018-02-27 22:18                       ` Jeff King
2018-02-27 23:32                         ` Junio C Hamano
2018-02-27  6:51       ` Jonathan Nieder
2018-02-27 19:30         ` Brandon Williams
2018-02-07  1:12     ` [PATCH v3 15/35] transport: convert get_refs_list to take a list of ref patterns Brandon Williams
2018-02-21 22:56       ` Jonathan Tan
2018-02-22 18:25         ` Brandon Williams
2018-02-07  1:12     ` [PATCH v3 16/35] transport: convert transport_get_remote_refs " Brandon Williams
2018-02-21 22:58       ` Jonathan Tan
2018-02-22 18:26         ` Brandon Williams
2018-02-22 19:32           ` Jonathan Tan
2018-02-22 19:51             ` Brandon Williams
2018-02-07  1:12     ` [PATCH v3 17/35] ls-remote: pass ref patterns when requesting a remote's refs Brandon Williams
2018-02-07  1:12     ` [PATCH v3 18/35] fetch: pass ref patterns when fetching Brandon Williams
2018-02-27  6:53       ` Jonathan Nieder
2018-02-07  1:12     ` [PATCH v3 19/35] push: pass ref patterns when pushing Brandon Williams
2018-02-27 18:23       ` Stefan Beller
2018-02-07  1:12     ` [PATCH v3 20/35] upload-pack: introduce fetch server command Brandon Williams
2018-02-21 23:46       ` Jonathan Tan
2018-02-22 18:48         ` Brandon Williams
2018-02-07  1:12     ` [PATCH v3 21/35] fetch-pack: perform a fetch using v2 Brandon Williams
2018-02-24  0:54       ` Jonathan Tan
2018-02-26 22:23         ` Brandon Williams
2018-02-27 19:27       ` Stefan Beller
2018-02-27 19:40         ` Brandon Williams
2018-02-07  1:12     ` [PATCH v3 22/35] upload-pack: support shallow requests Brandon Williams
2018-02-07 19:00       ` Stefan Beller
2018-02-10 10:23         ` Duy Nguyen
2018-02-13 17:06         ` Brandon Williams
2018-02-27 18:29       ` Jonathan Nieder
2018-02-27 18:57         ` Brandon Williams
2018-02-07  1:13     ` [PATCH v3 23/35] fetch-pack: " Brandon Williams
2018-02-23 19:37       ` Jonathan Tan
2018-02-23 19:56         ` Brandon Williams
2018-02-07  1:13     ` [PATCH v3 24/35] connect: refactor git_connect to only get the protocol version once Brandon Williams
2018-02-21 23:51       ` Jonathan Tan
2018-02-07  1:13     ` [PATCH v3 25/35] connect: don't request v2 when pushing Brandon Williams
2018-02-07  1:13     ` [PATCH v3 26/35] transport-helper: remove name parameter Brandon Williams
2018-02-27 23:03       ` Jonathan Nieder
2018-02-07  1:13     ` [PATCH v3 27/35] transport-helper: refactor process_connect_service Brandon Williams
2018-02-07  1:13     ` [PATCH v3 28/35] transport-helper: introduce stateless-connect Brandon Williams
2018-02-22  0:01       ` Jonathan Tan
2018-02-22 18:53         ` Brandon Williams
2018-02-22 21:55           ` Jonathan Tan
2018-02-27 23:30       ` Jonathan Nieder
2018-02-28 19:09         ` Brandon Williams
2018-02-07  1:13     ` [PATCH v3 29/35] pkt-line: add packet_buf_write_len function Brandon Williams
2018-02-27 23:11       ` Jonathan Nieder
2018-02-28  1:08         ` Brandon Williams
2018-02-07  1:13     ` [PATCH v3 30/35] remote-curl: create copy of the service name Brandon Williams
2018-02-22  0:06       ` Jonathan Tan
2018-02-22 18:56         ` Brandon Williams
2018-02-07  1:13     ` [PATCH v3 31/35] remote-curl: store the protocol version the server responded with Brandon Williams
2018-02-27 23:17       ` Jonathan Nieder
2018-02-07  1:13     ` [PATCH v3 32/35] http: allow providing extra headers for http requests Brandon Williams
2018-02-22  0:09       ` Jonathan Tan
2018-02-22 18:58         ` Brandon Williams
2018-02-07  1:13     ` [PATCH v3 33/35] http: don't always add Git-Protocol header Brandon Williams
2018-02-07  1:13     ` [PATCH v3 34/35] remote-curl: implement stateless-connect command Brandon Williams
2018-02-28  0:05       ` Jonathan Nieder
2018-02-28 20:21         ` Brandon Williams
2018-02-07  1:13     ` [PATCH v3 35/35] remote-curl: don't request v2 when pushing Brandon Williams
2018-02-22  0:12       ` Jonathan Tan
2018-02-22 18:59         ` Brandon Williams
2018-02-22 19:09           ` Brandon Williams
2018-02-12 14:50     ` [PATCH v3 00/35] protocol version 2 Derrick Stolee
2018-02-21 20:01     ` Brandon Williams
2018-02-28 23:22     ` [PATCH v4 " Brandon Williams
2018-02-28 23:22       ` [PATCH v4 01/35] pkt-line: introduce packet_read_with_status Brandon Williams
2018-03-13 19:35         ` Jonathan Tan
2018-03-13 19:52           ` Brandon Williams
2018-02-28 23:22       ` [PATCH v4 02/35] pkt-line: allow peeking a packet line without consuming it Brandon Williams
2018-03-01 20:48         ` Junio C Hamano
2018-03-12 21:56           ` Brandon Williams
2018-02-28 23:22       ` [PATCH v4 03/35] pkt-line: add delim packet support Brandon Williams
2018-03-01 20:50         ` Junio C Hamano
2018-03-01 21:04           ` Junio C Hamano
2018-03-01 22:49             ` Brandon Williams
2018-03-01 23:43               ` Junio C Hamano
2018-02-28 23:22       ` [PATCH v4 04/35] upload-pack: convert to a builtin Brandon Williams
2018-03-13 16:40         ` Jonathan Tan
2018-03-13 19:50           ` Brandon Williams
2018-02-28 23:22       ` [PATCH v4 05/35] upload-pack: factor out processing lines Brandon Williams
2018-03-01 21:25         ` Junio C Hamano
2018-03-12 22:24           ` Brandon Williams
2018-03-12 22:39             ` Brandon Williams
2018-02-28 23:22       ` [PATCH v4 06/35] transport: use get_refs_via_connect to get refs Brandon Williams
2018-03-01 21:25         ` Junio C Hamano
2018-02-28 23:22       ` [PATCH v4 07/35] connect: convert get_remote_heads to use struct packet_reader Brandon Williams
2018-02-28 23:22       ` [PATCH v4 08/35] connect: discover protocol version outside of get_remote_heads Brandon Williams
2018-03-13 15:49         ` Jonathan Tan
2018-02-28 23:22       ` [PATCH v4 09/35] transport: store protocol version Brandon Williams
2018-02-28 23:22       ` [PATCH v4 10/35] protocol: introduce enum protocol_version value protocol_v2 Brandon Williams
2018-02-28 23:22       ` [PATCH v4 11/35] test-pkt-line: introduce a packet-line test helper Brandon Williams
2018-02-28 23:22       ` [PATCH v4 12/35] serve: introduce git-serve Brandon Williams
2018-03-01 23:11         ` Junio C Hamano
2018-03-12 22:08           ` Brandon Williams
2018-03-02 20:42         ` Junio C Hamano
2018-03-13 21:40           ` Brandon Williams
2018-03-02 20:56         ` Junio C Hamano
2018-03-13 21:35           ` Brandon Williams
2018-02-28 23:22       ` [PATCH v4 13/35] ls-refs: introduce ls-refs server command Brandon Williams
2018-03-02 21:13         ` Junio C Hamano
2018-03-13 21:27           ` Brandon Williams
2018-03-03  4:43         ` Jeff King
2018-03-05 18:21           ` Brandon Williams
2018-03-05 18:29             ` Jonathan Nieder
2018-03-05 20:38               ` Jeff King
2018-03-05 20:28             ` Jeff King
2018-03-13 21:23               ` Brandon Williams
2018-02-28 23:22       ` [PATCH v4 14/35] connect: request remote refs using v2 Brandon Williams
2018-02-28 23:22       ` [PATCH v4 15/35] transport: convert get_refs_list to take a list of ref patterns Brandon Williams
2018-02-28 23:22       ` [PATCH v4 16/35] transport: convert transport_get_remote_refs " Brandon Williams
2018-03-13 16:00         ` Jonathan Tan
2018-02-28 23:22       ` [PATCH v4 17/35] ls-remote: pass ref patterns when requesting a remote's refs Brandon Williams
2018-03-02 22:13         ` Junio C Hamano
2018-02-28 23:22       ` [PATCH v4 18/35] fetch: pass ref patterns when fetching Brandon Williams
2018-03-02 22:20         ` Junio C Hamano
2018-03-12 22:18           ` Brandon Williams
2018-02-28 23:22       ` [PATCH v4 19/35] push: pass ref patterns when pushing Brandon Williams
2018-03-02 22:25         ` Junio C Hamano
2018-03-12 22:20           ` Brandon Williams
2018-02-28 23:22       ` [PATCH v4 20/35] upload-pack: introduce fetch server command Brandon Williams
2018-03-13 16:20         ` Jonathan Tan
2018-03-13 21:49           ` Brandon Williams
2018-02-28 23:22       ` [PATCH v4 21/35] fetch-pack: perform a fetch using v2 Brandon Williams
2018-02-28 23:22       ` [PATCH v4 22/35] fetch-pack: support shallow requests Brandon Williams
2018-02-28 23:22       ` [PATCH v4 23/35] connect: refactor git_connect to only get the protocol version once Brandon Williams
2018-02-28 23:22       ` [PATCH v4 24/35] connect: don't request v2 when pushing Brandon Williams
2018-02-28 23:22       ` [PATCH v4 25/35] transport-helper: remove name parameter Brandon Williams
2018-02-28 23:22       ` [PATCH v4 26/35] transport-helper: refactor process_connect_service Brandon Williams
2018-02-28 23:22       ` [PATCH v4 27/35] transport-helper: introduce stateless-connect Brandon Williams
2018-03-13 16:30         ` Jonathan Tan
2018-03-14 17:36           ` Brandon Williams
2018-02-28 23:22       ` [PATCH v4 28/35] pkt-line: add packet_buf_write_len function Brandon Williams
2018-02-28 23:22       ` [PATCH v4 29/35] remote-curl: create copy of the service name Brandon Williams
2018-03-13 16:32         ` Jonathan Tan
2018-02-28 23:22       ` [PATCH v4 30/35] remote-curl: store the protocol version the server responded with Brandon Williams
2018-02-28 23:22       ` [PATCH v4 31/35] http: allow providing extra headers for http requests Brandon Williams
2018-03-13 16:33         ` Jonathan Tan
2018-02-28 23:22       ` [PATCH v4 32/35] http: don't always add Git-Protocol header Brandon Williams
2018-02-28 23:22       ` [PATCH v4 33/35] http: eliminate "# service" line when using protocol v2 Brandon Williams
2018-02-28 23:22       ` [PATCH v4 34/35] remote-curl: implement stateless-connect command Brandon Williams
2018-03-02 20:07         ` Johannes Schindelin
2018-03-05 19:35           ` Brandon Williams
2018-02-28 23:22       ` [PATCH v4 35/35] remote-curl: don't request v2 when pushing Brandon Williams
2018-03-13 16:35         ` Jonathan Tan
2018-03-01 18:41       ` [PATCH v4 00/35] protocol version 2 Junio C Hamano
2018-03-01 19:16         ` Brandon Williams
2018-03-01 20:59           ` Junio C Hamano

Reply instructions:

You may reply publically to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180223214557.GF234838@google.com \
    --to=bmwill@google.com \
    --cc=git@jeffhostetler.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=jrnieder@gmail.com \
    --cc=pclouds@gmail.com \
    --cc=peff@peff.net \
    --cc=sbeller@google.com \
    --cc=stolee@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

git@vger.kernel.org mailing list mirror (one of many)

Archives are clonable:
	git clone --mirror https://public-inbox.org/git
	git clone --mirror http://ou63pmih66umazou.onion/git
	git clone --mirror http://czquwvybam4bgbro.onion/git
	git clone --mirror http://hjrcffqmbrq6wope.onion/git

Newsgroups are available over NNTP:
	nntp://news.public-inbox.org/inbox.comp.version-control.git
	nntp://ou63pmih66umazou.onion/inbox.comp.version-control.git
	nntp://czquwvybam4bgbro.onion/inbox.comp.version-control.git
	nntp://hjrcffqmbrq6wope.onion/inbox.comp.version-control.git
	nntp://news.gmane.org/gmane.comp.version-control.git

 note: .onion URLs require Tor: https://www.torproject.org/
       or Tor2web: https://www.tor2web.org/

AGPL code for this site: git clone https://public-inbox.org/ public-inbox