Developpez.com - Java
X

Choisissez d'abord la catégorieensuite la rubrique :


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

Site officiel de Mercurial : en http://www.selenic.com/mercurial
Mercurial, le livre rouge : en http://hgbook.red-bean.com
Plugin Mercurial Netbeans :
TortoiseHG : en http://tortoisehg.sourceforge.net


VI. Remerciements



Valid XHTML 1.1!Valid CSS!

Responsables bénévoles de la rubrique Java : Mickael Baron - Robin56 -