Re: [PATCH] Docs: web server must setenv GIT_PROTOCOL for v2
- From
- Eric Wong <e@80x24.org>
- Date
- Sep 8, 2021, 16:50 UTC
- Message-ID
- <20210908165057.GA14162@dcvr>
- In-Reply-To
- <YTiXEEEs36NCEr9S@coredump.intra.peff.net>
Jeff King <peff@peff.net> wrote:
Show 12 quoted lines
> On Wed, Sep 08, 2021 at 06:48:47AM -0400, Jeff King wrote: > > > Both of the included examples here have been tested to work. The one for > > lighttpd is a little less direct than I'd like, but I couldn't find a > > way to directly set an environment variable to the value of a request > > header. From my reading of the documentation, lighttpd will set > > HTTP_GIT_PROTOCOL automatically, but git-http-backend looks only at > > GIT_PROTOCOL. Arguably http-backend should do this translation itself. > > So having discovered this, I kind of wonder if these documentation > patches are barking up the wrong tree. There is no reason we would not > want v2 to work out of the box (after all, it does for git://).
Agreed.
> The patch below does that (and could replace both my and Konstantin's > documentation patches).
<snip>
Show 5 quoted lines
> -- >8 -- > Subject: [PATCH] http-backend: handle HTTP_GIT_PROTOCOL CGI variable > > When a client requests the v2 protocol over HTTP, they set the > Git-Protocol header. Webservers will generaly make that available to our
"generally"
Show 9 quoted lines
> CGI as HTTP_GIT_PROTOCOL in the environment. However, that's not > sufficient for upload-pack, etc, to respect it; they look in > GIT_PROTOCOL (without the HTTP_ prefix). > > Either the webserver or the CGI is responsible for relaying that HTTP > header into the GIT_PROTOCOL variable. Traditionally, our tests have > configured the webserver to do so, but that's a burden on the server > admin. We can make this work out of the box by having the http-backend > CGI copy the contents.
Agreed. I've completely overlooked GIT_PROTOCOL support, so far...
This seems to be the right thing to do; I think I'll add support for it when I spawn git-http-backend in something I work on. (I also don't currently pass all HTTP headers in env when spawning CGI, maybe I should *shrug*)