Anyone still using gitweb?

2021-08-18 2-minute read

It seems like the self-hosting git world has all moved to gitlab or gitea.

For a number of reasons not worth enumerating, I’m still running gitolite and recently decided I wanted to checkout my code via https using gitweb.

I got through most of the installation and configuration without trouble (I could browse via the web and see all my repositories). But, when I tried to git clone using the https address I got a fatal “not found” error.

It seems that gitweb, out of the box, allows for easy web-browsing of git repositories but needs some extra work if you want to clone over https. Specifically, you need to use git-http-backend.

The git-http-backend man page is very useful, but assumes you are accessing your repos via instead of simply

These lines are my variation to the suggested apache configuration lines provided by man git-http-backend.

They differ by:

  • allowing for web access without specifying a subdirectory
  • using the debian /usr/lib/git-core path instead of /usr/libexec/git-core
  • removing git-receive-pack since I only plan to clone and don’t plan to push back to this repo.
DocumentRoot /usr/share/gitweb
<Directory /usr/share/gitweb>
  Options +FollowSymLinks +ExecCGI
  AddHandler cgi-script .cgi
  Require all granted
<Directory /usr/lib/git-core>
  Require all granted
SetEnv GIT_PROJECT_ROOT /var/lib/git
AliasMatch ^/(.*/objects/[0-9a-f]{2}/[0-9a-f]{38})$          /var/lib/git/$1
AliasMatch ^/(.*/objects/pack/pack-[0-9a-f]{40}.(pack|idx))$ /var/lib/git/$1
ScriptAliasMatch \
  "(?x)^/(.*/(HEAD | \
    info/refs | \
    objects/info/[^/]+ | \
    git-upload-pack))$" \
ScriptAlias / /usr/share/gitweb/gitweb.cgi/

The main trick is to direct some requests to apache2, some requests to /usr/lib/git-core/git-http-backend, and everything else to gitweb.cgi.