Introduction au système de gestion de versions : Mercurial (HG)
Date de publication : 09 septembre 2008
Par
Johann Sorel (Java appliqué au SIG)
Mercurial est l'un des derniers né parmis les systèmes de gestion de versions. Celui-ci a déjà
été adopté par SUN pour l'OpenJDK, OpenSolaris ou encore Netbeans.
I. Pourquoi passer à Mercurial?
I-A. Différence de fonctionnement
I-B. La syntaxe
I-C. L'architecture sur le réseau
I-D. L'architecture du projet
I-E. Les outils
II. Installation
II-A. Linux
II-B. Windows
III. Installation de HG View
IV. Premier projet
IV-A. Hello Mercurial !
IV-B. Mercurial ready
IV-C. Partager le projet
IV-D. Récupérer le projet
IV-E. les principales commandes
V. En savoir plus
VI. Remerciements
I. Pourquoi passer à Mercurial?
Si vous avez déjà essayé Subversion (SVN) comme système de gestion de version, alors
Mercurial se présente comme son évolution logique. Mercurial (de son petit nom HG) a
énormement de ressemblance avec SVN, grâce à cela une journée suffit pour s'adapter
au nouveau système.
Voyons les principaux avantages :
I-A. Différence de fonctionnement
Subversion est à la base un systeme centralisé avec au centre un serveur
disposant de la totalité de l'historique et gérant l'intégralité des transactions.
Mercurial est différent dans le sens où toute personne qui récupère le projet devient
potentiellement un "fork" du projet. Quand on récupère un projet avec HG on récupère aussi
une partie du dépôt (repository) ainsi qu'une partie de l'historique. Ce fork obtenu est
parfaitement viable et indépendant, il n'a plus besoin du serveur principale pour vivre.
Avec Subversion les commandes sont svn checkout et svn update alors que sous
mercurial on a hg clone , hg pull et hg update. Le update sous mercurial
servant a mettre votre copie de travail a jour par rapport a votre dépôt et non par rapport
au serveur.(détail des commandes plus loin dans l'article).
Cette approche à plusieurs avantages.
- Elle permet de travail en local hors connection.
- Elle permet de faire une série de commit en local sans géner les autres développeurs.
- Elle permet de faire en un seul commit sur le serveur toutes la série des commits fait localement.
Sur les projets volumineux il était contraignant de devoir passer entre chaque commit d'état stable
à état stable (sous peine de géner tout le monde), HG résoud efficacement se probleme en permettant
les commits localement avant d'être propagé sur le serveur.
I-B. La syntaxe
Le site nous fournit 2 sympatiques résumés :
I-C. L'architecture sur le réseau
I-D. L'architecture du projet
Continuons avec l'architecture du projet en lui même, prenons SVN encore une fois comme
référence.
SVN créé à la racine du projet un dossier .svn, HG fait de même sauf que
celui ci est votre dépôt complet avec historique et tout le reste.
SVN créé aussi un dossier .svn dans chaque sous dossier. HG ne fait rien de tel, hormis le
dossier .hg a la racine rien n'est ajouté dans les sources du projet, vous pouvez les manipuler
librement sans craindre que HG vous face les gros yeux et vous dises "il manque ci, ca et cela pour commiter"
comme ferait SVN. C'est une chose de moins a penser.
Autre point intéressant, vous avez surement déjà utilisé la commande svn ignore, HG simplifi
le systeme, il suffit maintenant de mettre un .hgignore avec les divers mask a ignorer dedans à la racine.
I-E. Les outils
Bien que la version une de mercurial ne date que de Mars 2008, le développement des principaux
outils n'a pas trainé. On trouve notamment TortoiseHG, NetBeans intégre ce système par défaut depuis
la version 6 et un plugin Eclipse est en cours.
Il en existe sans doute d'autre mais rien que ceux ci permettent déjà de remplacer votre serveur
SVN dès aujourd'hui.
II. Installation
II-A. Linux
II-B. Windows
III. Installation de HG View
IV. Premier projet
IV-A. Hello Mercurial !
IV-B. Mercurial ready
IV-C. Partager le projet
IV-D. Récupérer le projet
IV-E. les principales commandes
V. En savoir plus
VI. Remerciements