Serveur de dépôts Mercurial

Mise en place de dépôts Mercurial avec accès en écriture utilisant les comptes de DokuWiki.

DokuWiki

Vérifiez que les mots de passe des utilisateurs sont stockés selon :

$conf['passcrypt'] = 'smd5';

les mots de passe dans users.auth.php ressemblent alors à ceci :

user:$1$157382ed$u3AEZpF5xZMNlWGfHZdn6/:...

Répertoire des dépôts

Dans notre cas, le répertoire servant de point d'entrée pour les dépôts Mercurial est dans l'arborescence de DokuWiki (/home/www). Il contient les fichiers hgwebdir.cgi, hgweb.config et .htaccess. Les dépôts sont stockés dans le répertoire /home/hg.

hgweb.config

[collections]
/home/hg = /home/hg

[web]
style = gitweb

.htaccess

DirectoryIndex hgwebdir.cgi
Options ExecCGI FollowSymLinks
 
RewriteEngine On
RewriteBase /home/www/hg
 
RewriteCond %{REQUEST_URI} !^/hg/hgwebdir\.cgi.*
RewriteRule (.*) /hg/hgwebdir.cgi/$1 [PT]
 
RewriteRule ^$ hgwebdir.cgi  [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) hgwebdir.cgi/$1  [QSA,L]
 
<Limit POST>
AuthType Basic
AuthName Users
AuthUserFile /home/www/conf/users.auth.php
Require valid-user
</Limit>

Dépôts

Une première copie de chaque dépôt est copiée dans /home/hg et les droits d'écriture sont donnés à l'utilisateur exécutant le serveur Apache. Puis un fichier hgrc est ajouté dans le répertoire .hg/ du projet :

[web]
contact = someone
allowgz = true
allowzip = false
allowbz2 = false
style = gitweb
allow_push = *

Dans le cas où seuls certains utilisateurs doivent pouvoir consigner des modifications dans le dépôt, il convient de mettre en place une ligne allow_push appropriée, par exemple :

allow_push = bug,bboett,adlp