Mercurial et hgweb sur OVH mutualisé
Après quelques essais infructueux pour installer hgweb ou gitweb sur OVH, et me passer ainsi de sites tiers tels que bitbucket ou github, j’ai enfin réussi ! Le résultat est ici: http://hg.saimon.org/ (je suis passé à git: https://github.com/saimn).
Voici donc quelques notes sur l’installation de mercurial et de hgweb sur un hébergement mutualisé OVH (au moins la version “pro” car il faut un accès ssh !).
Télécharger Python-2.4.4.tar.bz2 (la version courante chez OVH), extraire l’archive, se rendre dans Python-2.4.4/ et lancer configure (nécessaire pour avoir les headers Python.h et pyconfig.h) :
tar xjvf Python-2.4.4.tar.bz2
cd Python-2.4.4/
./configure
Télécharger mercurial et l’extraire :
tar xzvf mercurial-1.6.tar.gz
cd mercurial-1.6/
Renseigner le chemin des header python:
export C_INCLUDE_PATH="$HOME/Python-2.4.4/Include:$HOME/Python-2.4.4"
Lancer l’installation, avec la version pour installer en espace utilisateur (par contre make install-home ne fonctionne pas car il faudrait installer docutils pour pouvoir installer également la doc) :
make install-home-bin
Paramétrage du path python (à mettre dans le .bashrc par exemple):
export PYTHONPATH=${HOME}/lib/python
Copier mercurial-1.6/hgweb.cgi et l’éditer. Cette étape est bien décrite dans la doc officielle. Seul point à noter: dans mercurial 1.6, hgwebdir.cgi a été fusionné avec hgweb.cgi. Pour une configuration multi-dépôts, il suffit donc de remplir le fichier hgweb.config et d’éditer hgweb.cgi pour y mettre le chemin : config = /chemin/vers/hgweb.config. Il faut également donner les bons droits :
chmod 705 hgweb.cgi
Pour avoir de belles urls: cf. le paragraphe correspondant dans la doc.
Pour faire un clone/push/pull par ssh, il y a un soucis car le binaire hg n’est pas trouvé. L’option PermitUserEnvironment de sshd_config n’étant pas diponible, il n’est pas possible de s’en sortir avec le fichier ~/.ssh/environment. Heureusement il reste l’option remotecmd de mercurial :
hg clone --remotecmd bin/hg ssh://mon.serveur.hg/projet/
Il est également possible d’utiliser cette option dans le fichier .hgrc d’un dépôt:
[ui] remotecmd=/chemin/vers/bin/hg
On peut alors faire un clone directement par http avec l’adresse du dépôt. Attention, mettre verbose = True dans le fichier ~/.hgrc (sur le serveur) provoque une erreur 500. Par contre, je n’ai pas testé le push par http(s) (basé sur l’authentification apache).