Dépôt Mercurial sur CentOs, Part 2 : Mercurial

Maintenant que nous avons un serveur sécurisé avec SSL (voir Dépôt Mercurial sur CentOs, Part 1), nous allons mettre en place le dépôt mercurial.

La structure qui sera mise en place permettra la gestion de multiprojets.


Installation de mercurial :

Ici rien de plus simple étant donné que celui-ci est déjà packagé :

yum install mercurial

Pour afficher le numéro de version de Mercurial mais aussi vérifier que celui-ci fonctionne bien avant de continuer quoi que ce soit il vous faut taper:

hg --version

Il faut maintenant créer un dossier où les dépôt seront stockés :

mkdir -p /srv/hg/cgi-bin

Note: Libre à vous de le changer si celui-ci ne vous convient pas.

Dans le répertoire cgi-bin nous allons y copier le cgi de mercurial :

cp /usr/share/doc/mercurial-1.2/hgwebdir.cgi /srv/hg/cgi-bin/

Note: Il existe deux cgi un pour la gestion de projet unique (hgweb) et un pour la gestions de plusieurs projets (hgwebdir). C'e sont ces scripts qui vont se charger de tout !

Il faut maintenant créer le fichier de configuration hgweb.config dans /srv/hg/cgi-bin/ et y ajouter ces deux lignes :

[collections]
/srv/hg = /srv/hg

Voilà c'est à peu près tout pour la mise en place de Mercurial, reste la configuration d'Httpd.

Configuration d'Httpd

Il faut rajouter les éléments permettant d'indiquer l'emplacement du cgi de mercurial  dans /etc/httpd/conf.d/ssl.conf 


Alias /hg /srv/hg/cgi-bin
<Directory "/srv/hg/cgi-bin/">

DirectoryIndex hgwebdir.cgi
SetHandler cgi-script
AllowOverride All
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/httpd/hg.log


Création d'un projet 

Nous allons créer notre premier dépot dans /srv/hg/MonProjet et donner les droits d'écriture dans le dépôt à apache:

sudo -u apache hg init /srv/hg/MonProjet

Rendez-vous sur https://serveur/hg/hgwebdir.cgi où vous retrouverez votre projet !

Permettre le push

 Avoir accès au dépôt ce n'est pas tout, il faut aussi pouvoir y écrire !

Pour celà il faut créer le fichier /srv/hg/MonProjet/.hg/hgrc et y mettre:

[web]
allow_push = *

L'étoile donne accès à n'importe qui, il faudra changer celle-ci par les noms d'utilisateurs devant avoir accès au dépôt. Il serait malencontreux que tout le monde puisse envoyer des données sur le dépôt.

Sécuriser le dépôt

Il est intéressant et même indispensable de protéger son répertoire pour éviter d'avoir des ennuis.

il faut tout d'abord commencer par créer un fichier qui contiendra les logins et password des personnes autorisées :

htpasswd -c /etc/mercurial/htpasswd remi

Note: Il est important de mettre le htpasswd en dehors des répertoires accessibles par les internautes.

Note: le '-c' n'est à mettre que si le fichier n'existe pas (afin de le créer). 

Pour rajouter un autre utilsateur à la liste il suffira de faire :

htpasswd /etc/mercurial/htpasswd remi

Il faut maintenant placer un fichier .htaccess dans /srv/hg/cgi-bin  :

AuthUserFile /etc/mercurial/htpasswd
AuthGroupFile /dev/null
AuthName "Identification"
AuthType Basic
<LimitExcept GET>
Require valid-user
</LimitExcept>

Désormais lors d'un push, un nom d'utilisateur et un mot de passe seront demandés !

Importation du dépot sur une machine de travail

Maintenant que notre repository est opérationnel, il faut l'importer sur les machines de travail !

Cela se fait très simplement au travers de la commande :

hg clone AdresseWebDuRepo RepertoireDeDestination

Conclusion

Et voilà, à vous les joies de Mercurial !

Améliorations

Un point intéressant serait de modifier le chemin d'accès actuel (https://serveur/hg/hgwebdir.cgi/MonProjet) par quelques chose de plus propre comme : https://hg.serveur/MonProjet.

N'ayant pas de certifs wildcard pour le moment pour mon domaine je ne l'ai pas encore fait. Cet article sera modifié quand je trouverai un peu de temps pour mettre ca en place ;)

L'authentification est ici de type 'Basic' ce qui signifie que les logins/mots de passes seront visibles sur le réseau si le SSL n'est pas activé (ce qui n'est pas notre cas).

Pour toutes remarques/observations n'hésitez pas à m'en faire part !

Vus : 406
Publié par Génération Linux : 126