Auf folgende Art kann man einen mercurial (hg) Repository Server auf Ubuntu installieren,
der beim commit/push gegen libpam authentisiert. Das kann dann pro Repository noch
eingeschraenkt werden:
/var/hg angelegt und auf www-data chownen
hgweb.wsgi aus /usr/lib/python*/site-package/mercurial/... nach /var/hg/cgi kopieren
/etc/apache2/conf.d/hg;
WSGIScriptAlias /hg "/var/hg/cgi/hgweb.wsgi"
AllowOverride All
libapache2-mod-authnz-external installieren (zieht apache und fast alles nach)
libapache2-mod-wsgi installieren
ssl und wsgi angeschaltet per
ln -s /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/.
ln -s /etc/apache2/mods-available/*wsgi.load /etc/apache2/mods-enabled/.
ln -s /etc/apache2/mods-available/mods-available/ssl.load /etc/apache2/mods-enabled/.
authnz config in /etc/apache2/conf.d/authnz:
AddExternalAuth pwauth /usr/sbin/pwauth
SetExternalAuthMethod pwauth pipe
AddExternalGroup unixgroup /usr/sbin/unixgroup
SetExternalGroupMethod unixgroup environment
/var/hg/.htaccess um Auth gegen PAM zu erzwingen:
AuthType Basic
AuthName Mercurial
AuthBasicProvider external
AuthExternal pwauth
Require valid-user
/var/hg/hgweb.conf:
[web]
descend = True
collapse = True
baseurl = /hg
[paths]
/mercurial = /var/hg/repos/**
Repos liegen dann unter /var/hg/repos/
Die URL ist https://$hostname/hg/mercurial/$reponame
In den /var/hg/repos/$repo/.hg/hgrc:
[web]
name = ...
description = ...
allow_push = user1, user2,...
Was jetzt noch fehlt ist ein kleines CGI, dass die repos mit "hg init" anlegt, die
.hg/hgrc anpasst und vielleicht die SSH keys der User in ~hg/.ssh/authorized_keys
mit passenden
command="hg server ...."
settings ein/austr"aegt.