Subject: Re: Git-aware HTTP transport

From: "H. Peter Anvin" <[email-masked]>
Date: Mon, 25 Aug 2008 21:14:56 -0700

Shawn O. Pearce wrote:
> 
> So I think the cost may actually break even with a stateful protocol
> if we imagine that the server is actually a farm of systems and
> simple round-robin load-balancing is being done in front of the
> Git-aware server.
> 
> I'd really like to keep the protocol stateless on the server side, as
> this makes it easier to embed into certain commerical server farms.
> 

Indeed.  It was a question, not a statement of any sort.  I was curious 
about the answer.

I really like the new draft, with the one consideration below.

> 
> HTTP Transport
> --------------
> 
> All requests are encoded as HTTP POST requests to the smart service
> URL, "$url/backend.git-http/$service".
> 
> All responses are encoded as 200 Ok responses, even if the server
> side has "failed" the request.  Service specific success/failure
> codes are embedded in the content.
> 

I still would like to have an indirection step at the start, in order to 
keep a single client on a server in the case of skew.  I suggest simply 
do it as HTTP POST $url/backend.git-http, empty body, and return a URL 
prefix to use for the remainder of the session.  That way a server who 
wants a stateful setup can return a URL which contains a session cookie; 
others can return a URL containing a target server, and finally others 
can simply return the requesting URL.

	-hpa