git/list[1] front-page[2] threads[3] people[4] search[5] about
 

git-http-backend vs gitweb pathinfo mode

From
Tony Finch <dot@dotat.at>
Date
Aug 5, 2013, 15:34 UTC
Message-ID
<alpine.LSU.2.00.1308051624570.16837@hermes-2.csi.cam.ac.uk>
Background:

You cam make the same URL work for gitwe and git clone as described in git-http-backend(1). It says:

   To serve gitweb at the same url, use a ScriptAliasMatch to only
   those URLs that git http-backend can handle, and forward the rest
   to gitweb:
       ScriptAliasMatch \
               "(?x)^/git/(.*/(HEAD | \
                               info/refs | \
                               objects/(info/[^/]+ | \
                                        [0-9a-f]{2}/[0-9a-f]{38} | \
                                        pack/pack-[0-9a-f]{40}\.(pack|idx)) | \
                               git-(upload|receive)-pack))$" \
               /usr/libexec/git-core/git-http-backend/$1
       ScriptAlias /git/ /var/www/cgi-bin/gitweb.cgi/

Gitweb has a friendly URL mode that uses pathinfo instead of query parameters.

Problem:

In pathinfo mode, gitweb sometimes produces URLs ending in /HEAD which match the git-http-backend regex and therefore get passed to the wrong CGI.

For example, go to https://git.csx.cam.ac.uk/i/ucs/git/git.git/tree and click on the gitweb subdirectory which takes you to https://git.csx.cam.ac.uk/i/ucs/git/git.git/tree/HEAD:/gitweb then click on [git/git.git] to go back, which takes you to https://git.csx.cam.ac.uk/i/ucs/git/git.git/tree/HEAD

Half-arsed solution:
I have amended the regex to start like
               "(?x)^/git/(.*/((?<=[.]git/)HEAD | \

which solves the problem for me since all my repos have names ending in .git and this doesn't clash with any gitweb action names. I don't think this is a general solution because some people like bare extensionless repo names. On the other hand I don't think the regex should list all the dozens of gitweb action names. So I'm not sure what the best fix is.

Tony.
-- 
f.anthony.n.finch  <dot@dotat.at>  http://dotat.at/
Forties, Cromarty: East, veering southeast, 4 or 5, occasionally 6 at first.
Rough, becoming slight or moderate. Showers, rain at first. Moderate or good,
occasionally poor at first.
Next: Tony Finch
Message 1 of 2 in “git-http-backend vs gitweb pathinfo mode”
  1. Tony FinchAug 5, 2013
  2. Tony FinchAug 5, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.