Ce billet va être orienté sur le gestionnaire décentralisé de source mercurial (aka hg). Dans le précédent billet, nous avions juste installé le logiciel Mercurial. Il est temps de le paramétrer.
Paramétrage de base
Créons un dépot mercurial de zéro :
workon <envt> cd Projets/Python hg init testhg
Le contenu de ce dossier est vide à l'exception d'un dossier .hg qui contient tout votre historique et configuration de votre dépôt mercurial (les utilisateurs de svn seront un peu déboussolés car ils ne trouveront pas d'équivalent aux répertoires .svn un peu partout dans l'arborescence du projet
)
Créer le fichier .hg/hgrc (si vous avez cloné un dépôt, celui-ci existe déjà avec la référence du dépôt cloné pour d'éventuelles interactions futures) et vous pouvez y ajouter plein de choses dont notamment :
- Des
pathsqui vous permettent de définir facilement où sont le(s) dépôts mercurial de votre projet. Dans mon cas, "default" est sur mon serveur privé et "bitbucket" correspond à l'espace projet sur Bitbucket. La commandehg pushenverra par défaut sur le dépôt "default". Si je veux pousser sur mon dépôt bitbucket, il me faudra saisirhg push bitbucket. C'est toujours plus sympa à taper que l'url complète du dépot à chaque push. - Un "username" qui fait que vous pouvez spécifier un compte pour vos commits ; sinon mercurial prend votre login système comme référence.
[paths] default = ssh://login@server.com/hg/project/ bitbucket = ssh://hg@bitbucket.org/login/project/ [ui] username = login
C'est le minimum syndical pour un dépôt mercurial à mon sens. Il existe plein d'autres options pour le fichier hgrc, ainsi que la liste des extensions de mercurial
Premières intéractions avec mercurial
Pour ajouter un fichier :
echo "Test Mercurial" > README hg st # pour hg status ? README hg add README # pour ajouter le fichier README dans le référentiel
Pour ajouter un ensemble de fichier (marche aussi avec une sous-arborescence)
for i in 1 2 3; do echo "Test Mercurial $i" > README-$i; done hg st # on voit que le fichier README est bien ajouté et que les autres sont inconnus du référentiel A README ? README-1 ? README-2 ? README-3 hg add # si pas de fichier précisé, on ajoute tous les fichiers inconnus du référentiel adding README-1 adding README-2 adding README-3
Pour commiter les fichiers dans le référentiel :
hg commit -m "Import Test"
Pour contrôler le dernier commit :
hg tip changeset: 0:830fddaa0d2f tag: tip user: login date: Mon Jul 19 22:49:50 2010 +0200 summary: Import Test
Publier en une fois sur plusieurs dépôts
Les hg push && hg push bitbucket, cela va un moment. Il faudrait trouver un moyen plus sympa de publier en une fois sur tous les dépôts référencés. Pour cela, l'extension publishall est votre amie.
Une fois le fichier publishall.py récupéré, il suffit d'enrichir votre fichier .hg/hgrc de la façon suivante :
[paths] default = ssh://login@server.com/hg/project/ bitbucket = ssh://hg@bitbucket.org/login/project/ [ui] username = login [extensions] publishall = /path/to/extensions/hg-publishall/publishall.py
Au prochain commit, il vous suffira de faire un hg pusha pour publier sur l'ensemble de vos dépôts.
Installation de hg-git
Si vous voulez travailler avec github tout en conservant mercurial, c'est possible :
easy_install hg-git # Cela ne semble pas fonctionner à ce jour avec pip...
Dans le fichier .hg/hgrc de votre projet :
[paths] default = ssh://login@server.com/hg/project/ bitbucket = ssh://hg@bitbucket.org/login/project/ github = git+ssh://git@github.com/login/project [ui] username = login [extensions] hgext.bookmarks = hggit = publishall = /path/to/extensions/hg-publishall/publishall.py [git] intree = True
Ensuite, après avoir créé bien sur votre projet sur github :
hg push github
Et votre code est alors disponible sur Github.
Publier son propre code via hgweb
Voir le tutoriel "Installer l’interface web de consultation d’un dépot mercurial" 
D'autres choses à partager sur Mercurial ?

