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).
Commentaires