Mercurial est un logiciel de gestion de version. C’est un serveur révision permettant aux développeurs d’exporter, d’exporter, d’importer et de gérer leurs applications depuis des dépôts stockés sur celui-ci. Il facilite la mise en cohérence des codes, développés par différentes personnes, travaillant sur un même projet par exemple.

Ce tutoriel explique comment mettre en place un serveur Mercurial 2.2.2 sous Debian 7.7.0. Si vous utilisez une autre distribution (ou version), il pourrait y avoir quelques divergence de paramétrage.

Toutes les manipulations à venir seront effectués en tant que super-utilisateur.


Installation de Mercurial

Mettre à jour la distribution

Exécutez la commande suivante :

apt-get update -y && apt-get upgrade -y

Cette commande permet de mettre à jour la liste des paquets de Debian et de mettre à jour les paquets installés sur votre système Debian.

Installer Apache2

Mercurial possède une interface Web permettant de partager les modifications avec d’autres personnes grâce à des publications. Pour l’utiliser, nous allons avoir besoin d’un serveur Web.

Exécutez la commande suivante :

apt-get install apache2

Installer Mercurial

Exécutez la commande suivante :

apt-get install mercurial

Configuration de l’interface graphique

L’interface graphique se configure dans le fichier /etc/mercurial/hgrc. hgrc est l’un des fichiers de configuration de Mercurial.

Éditez le fichier hgrc :

nano /etc/mercurial/hgrc

Ajoutez les lignes suivantes :

# Configuration de l'interface Web
[web]
allow_push = *
push_ssl = false
allow_archive = gz, zip, bz2
# Section où l'on définit l'utilisateur(s) propriétaire(s) de la configuration Web
[trusted]
users = www-data
allow_push Permet de donner l’autorisations de pousser des données. La valeur * autorise tout le monde à pousser, même sans authentification.
push_ssl Permet d’exiger ou non que les poussées entrantes soient transportées sur SSL (sécurisé). La valeur false indique que ce n’est pas exigé : étant donné qu’ici l’authentification n’est pas obligatoire.
allow_archive Permet de spécifier la liste des formats d’archives autorisés à au téléchargement. Ici les formats sont gz, zip et bz2.
users Permet de spécifier la liste des utilisateurs propriétaires de la configuration Web. Ici l’utilisateur sera www-data pour apache.

Pour plus d’options cliquez ici ;

Enregistrez les modifications.

Configuration des dépôts Mercurial

Créer le dossier repositories

Le dossier repositories contiendra les dépôts de Mercurial. Nous allons le créer dans le répertoire /var/hg/.

Créez l’arborescence /var/hg/repositories/ :

mkdir -p /var/hg/repositories/

Le dossier repositories  devra pouvoir être lu par apache pour que l’on puisse visualiser les dépôts depuis l’interface graphique. Pour cela, rendez apache propriétaire sur toute l’arborescence de repositories :

chown -R www-data:www-data /var/hg/

Créer le fichier de configuration des dépôts

Le fichier se nommera hgweb.config. Il va contenir la configuration de l’interface Web de Mercurial pour les dépôts.

Créez le fichier hgweb.config :

nano /var/hg/hgweb.config

Ajoutez-y les lignes suivantes :

# Configuration de l'interface Web pour les dépôts
[web]
style = gitweb
[collections]
/var/hg/repositories = /var/hg/repositories

Si vous souhaitez vous informer sur les options utilisés cliquez ici ;

Enregistrez le fichier.

Rendre les dépôts accessibles

Pour que les dépôts du serveur Mercurial soient accessibles, il faut utiliser le script « hgweb.cgi » qui permet de gérer leur configuration. Ce script doit ensuite être exécuté par apache pour afficher l’interface Web de
Mercurial. Il existe un exemple de ce script dans le dossier
/usr/share/doc/mercurial/examples/.

Copiez le script « hgweb.cgi » dans /var/hg/ :

cp /usr/share/doc/mercurial/examples/hgweb.cgi /var/hg/

Éditez le script :

nano /var/hg/hgweb.cgi

Repérez la ligne suivante :

config = ”/path/to/repo/or/config”

Modifiez le chemin renseigné par celui-ci :

/var/hg/hgweb.config

Enregistrez les modifications ;

Rendez le script exécutable :

chmod +x /var/hg/hgweb.cgi

Configuration de apache

Créer le fichier de configuration apache pour Mercurial

Pour pouvoir accéder à l’interface Web de Mercurial il faut créer un fichier de configuration apache. Celui sera stocké dans le dossier /etc/apache2/sites-available/ sous le nom de mercurial.conf.

Créez le fichier mercurial.conf :

nano /etc/apache2/sites-available/mercurial.conf

Ajoutez les lignes suivante :

ScriptAlias /mercurial '/var/hg/hgweb.cgi'

AuthType basic
AuthName "mercurial"
AuthUserFile /var/hg/hgusers
Require valid-user
ScriptAlias Permet de spécifier un alias pour le chemin /var/hg/hgweb.cgi, qui est /mercurial. L’adresse Web Mercurial sera donc http://IPServeur/mercurial/
AuthType Permet de spécifier la méthode d’authentification à Mercurial. Ici la méthode est basic.
AuthName Permet de spécifier l’identificateur à utiliser avec la méthode. Ici l’identificateur est mercurial.
AuthUserFile Permet de spécifier le fichier contenant la liste des utilisateurs Web. Ici le fichier est /var/hg/hgusers.
Require Permet de spécifier le type d’utilisateur ayant accès à Mercurial. Ici les utilisateurs autorisés sont les utilisateurs renseigné dans le fichier hgusers.

Enregistrez le fichier.

Activez la configuration :

a2ensite mercurial.conf 

 Relancez le service apache2 :

service apache2 reload 

Vous devriez déjà pouvoir accéder à Mercurial à l’adresse http://IPServeur/mercurial/ mais, il n’y a pour le
moment aucun utilisateur apache existant pour s’y connecter.

 Créer des utilisateurs de l’interface Mercurial

Dans le fichier mercurial.conf nous avons renseigné à l’aide de l’option AuthUserFile le chemin vers le
fichier
hgusers qui doit contenir la liste de nos d’utilisateurs. De plus, nous avons indiqué que le site Mercurial était accessible seulement via les utilisateurs contenu dans ce fichier, à l’aide de l’option Require. Nous allons donc maintenant créer le fichier hgusers.

Nous allons utiliser la commande htpasswd pour créer le fichier hgusers dans lequel sera stocké la liste les
utilisateurs et leur mot de passe (crypté).
  A chaque utilisateur que vous créerez, vous devrez appliquer les manipulations à venir.

Pour l’exemple, nous allons créer l’utilisateur mercurial avec comme mot de passe mercurial

htpasswd -cb /var/hg/hgusers mercurial mercurial

Syntaxe : htpasswd -cb /var/hg/hgusers utilisateur motdepasse

Cette commande crée le fichier hguser (option -c) en même temps que l’utilisateur mais, pour ensuite ajoutez des utilisateurs dans ce fichier vous devez utiliser la commande suivante :

htpasswd -b /var/hg/hgusers utilisateur motdepasse 

Rendez apache propriétaire de ce fichier :

chown www-data:www-data /var/hg/hgusers 

Redémarrez le service apache2 :

service apache2 restart 

Vous devriez maintenant pouvoir accéder à l’interface de Mercurial en vous connectant à l’aide de l’utilisateur mercurial (ou autre si vous avez créé d’autres compte) à l’adresse http://IPServeur/mercurial/.

Création d’un dépôt

Les manipulations à venir seront identiques pour chaque dépôt que vous créerez.

Créer un dossier servant de dépôt

Un dépôt est en réalité un simple dossier qui contiendra vos données. Pour rappel, c’est le répertoire /var/hg/ qui va contenir les dépôts Mercurial.

Pour l’exemple, nous allons créer un dossier MERCURIAL:

mkdir /var/hg/repositories/MERCURIAL 

Syntaxe : mkdir /var/hg/repositories/nomdossier

Initialiser le dépôt

Pour que le dépôt soit pris en compte et visible depuis l’interface Web de Mercurial le dossier que nous avons créé doit être initialisé avec la commande hg init.

Initialisez le dépôt MERCURIAL :

hg init /var/hg/repositories/MERCURIAL

Syntaxe : mkdir hg init /var/hg/repositories/nomdossier

Vous pouvez également directement utiliser la commande hg init sans passer par mkdir pour créer le dossier en question et l’initialiser.

Rendez apache propriétaire de l’arborescence de ce dépôt :

chown -R www-data:www-data /var/hg/repositories/MERCURIAL

Syntaxe : chown -R www-data:www-data /var/hg/repositories/nomdépôt

Vous devriez maintenant pouvoir visualiser ce dépôt depuis l’interface WEB de Mercurial.


Ce tutoriel est terminé. Votre serveur Mercurial est maintenant fonctionnel. Prochainement je vous expliquerais comment utiliser Mercurial en ligne de commande (Shell).

Si vous avez des problèmes, où que vous trouvez que certains points sont mal expliqués (ou faux), n’hésitez pas à m’avertir.