Mercurial : la gestion de source qui me convient

Cela fait un certain temps que je veux utiliser une solution de gestion de sources pour mes développements. J’ai longtemps tourné en rond autour d’une solution Subversion intégrée dans Eclipse avec les plugins Subversive ou Subclipse. Après plusieurs tentatives au fils des mois, je ne suis jamais parvenu à utiliser Subversion au quotidien et j’ai abandonné à chaque fois. En fait, j’ai trouvé cette solution trop contraignante pour 4 raisons : ma volonté de l’utiliser depuis Eclipse, l’obligation d’installer un serveur subversion, ne pas travailler en équipe sur des sources communs et le fait de faire un apprentissage de l’outil seul.

Depuis quelques semaines je collabore à un projet qui nécessite un travail en équipe et qui impose donc un outil de gestion de sources. N’ayant pas le choix, j’ai bien du m’y mettre et avec l’assistance de mes partenaires de travail, ça c’est finalement passé vite et plutôt facilement. Cet outil, c’est Mercurial (également appelé Hg).

Je ne vais pas vous faire ici une étude comparée de Subversion et de Mercurial car ceci est déjà très bien fait sur le blog PilotSystems. Je dirai juste que contrairement à Subversion qui utilise un dépôt unique centralisé par tous les développeurs, Mercurial utilise 2 types de dépôt : un dépôt local et un dépôt central. L’avantage de ce système dans mon cas est que pour la plupart de mes projets, le dépôt local me suffit car je travail seul. Le dépôt local permet toutes les opérations dont on a besoin au minimum : commit, update revert, diff, tags, branch, …

Un autre point à l’avantage de Mercurial est que le dépot local est constitué d’une arborescence de fichiers simples à sauvegarder et que les sources ne sont pas pollués par des fichiers cachés dans chaque répertoires des sources.

Je n’utilise par Mercurial depuis Eclipse mais soit en ligne de commandes (il n’y a pas tant de commandes que ça) soit avec l’interface graphique MacHG.

Tutoriaux et arcticles

Voici les bons tutoriaux que j’ai trouvé (par ordre de préférence) :

Une très bonne série d’articles par Steve Losh sur l’utilisation des branches :

Outils de Merge et de Diff

Tout d’abord, configurer l’outil de comparaison (diff) et d’assistance au merge. En ligne de commande, par défaut, il n’y a pas d’outil de diff et de merge actif et avec MacHg par défaut, c’est Filemerge qui est utilisé si XCode est installé. Le problème avec Filemerge, c’est qu’il ne réussi pas toujours à afficher les différences et qu’il ne peut pas comparer simultanément 3 versions d’un même fichier pour gérer efficacement les merges.

J’ai donc choisi d’installer Diffmerge. La procédure d’installation est bien documentée et simple (dans le fichier Readme). Il faut bien aller jusqu’au bout en installant les scripts de lancement en ligne de commande. Pour l’intégration à Mercurial, cela se passe dans le fichier ~/.hgrc et c’est également bien documenté sur le wiki de Mercurial. Pour une utilisation avec MacHg, il faut aller sur l’onglet « Advanced » des préférences de MacHg. Positionner les options de la zone « Merge and Diff Tool » comme indiqué dans la copie d’écran ci-dessous.

MacHg

 

Gestion des mots de passe par dépot

Lors d’un accès aux dépôts centralisés, il est demandé un login. Il est possible de stocker ces login par dépôt dans le fichier ~/.hgrc. Tout se passe dans la section « [auth] » comme indiqué dans cet exemple.

 

Mise à jour du 19 septembre 2011 :

Depuis l’écriture de cet article, j’ai également travaillé avec Git un autre outils de gestion de source. Tout comme Mercurial, Git est une solution comportant un  dépôt local et et un dépôt central. Bien que le principe soit le même, les commandes varient sensiblement et je trouve finalement Git plus complexe à utiliser que Mercurial. Je suis entre autre perturbé par l’absence de commandes simples similaire à hg incoming et hg outgoing.

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *