Héberger un dépot mercurial avec nginx

Mercurial [1] est un gestionnaire de version décentralisé. Il présente l’avantage d’être plus simple que git pour les actions de base, mais aussi pour héberger une interface web.

[ul]

  • Installation du minimum vital : apt-get install nginx mercurial fcgiwrap
  • Création d’un dépot mercurial sur le serveur : mkdir depothg cd depothg hg init
  • Personnaliser le dépot en éditant le fichier depothg/.hg/hgrc (facultatif)

[web] contact = Votre nom description = Description qui déchire allow_archive = gz, zip, bz2 allow_push = *

  • Copie du script cgi (qui générera les pages web) cp /usr/share/doc/mercurial-common/examples/hgweb.cgi ~ chmod +x ~/hgweb.cgi
  • Edition de hgweb.cgi selon vos besoins :
  • Création de hgweb.config [paths] depothg = /home/pi/depothg [web] baseurl = /hg staticurl = /static descent = True collapse = True
    baseurl sera placé devant chaque liens générés. Cela est pratique si vous n’hébergez pas le dépot à la racine du serveur.

  • À rajouter dans le fichier de configuration de nginx :

location ~ /hg/ { rewrite ^/hg(.*)$ $1 break; fastcgi_pass unix:/var/run/fcgiwrap.socket; fastcgi_param SCRIPT_FILENAME /home/user/hgweb.cgi; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_param AUTH_USER $remote_user; fastcgi_param REMOTE_USER $remote_user; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; include fastcgi_params; } location ^~ /static { rewrite ^/static(/.*)$ $1 break; root /usr/share/mercurial/templates/static; autoindex off; }
[/ul]

Un exemple sur un raspberry pi : [2]
Voir aussi [3]

[1] : mercurial.selenic.com/
[2] : yeuxdelibad.net/hg/
[3] : mercurial.selenic.com/wiki/Publi … positories