Jeff King <peff@xxxxxxxx> wrote: > 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> > -- >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" > 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*)