mardi 28 décembre 2010

Migration de SVN vers Mercurial : Partie 1 Introduction

Intérêt de passer à Mercurial

Passer à Mercurial a comme principal intérêt de permettre une décentralisation de la gestion de versions. En effet, chaque poste connecté à un dépôt est potentiellement un dépôt lui aussi.
L’autre intérêt réside dans la gestion même des versions, les informations sur le dépôt sont contenues dans un unique dossier .hg situé à la racine du dépôt, contrairement par exemple à SVN qui génère un dossier .svn dans chaque sous-dossier du projet.
Enfin seul le dossier .hg sert à gérer les informations de version. Si vous téléchargez celui-ci vous pouvez générer les fichiers dont vous avez besoin.
Enfin comme vous êtes potentiellement un serveur de dépôt vous pouvez gérer la version de vos sources en local avant de les envoyer sur le serveur principal. Voici un schéma d’exemple : 

Notez dans le schéma la présence du symbole Hg qui n’est autre que le symbole du mercure dans le tableau périodique des éléments. Comme SVN, on applique une version en faisant un Commit, ce qui change c’est qu’on envoie cette version aux autres dépôts via la commande push et qu’on récupère ce qui a changé via la commande pull.
 

Inconvénients de Mercurial

Les inconvénients découlent de ses principaux avantages, avec l’habitude d’utiliser SVN l’erreur de faire juste un commit arrive fréquemment dans les débuts. De fait, une deuxième personne travaillant avec vous ou sur un autre poste ne voit pas les modifications car, dans la plupart du temps, les postes ne servent pas les modifications aux autres postes. Après s’être posé la question deux ou trois fois, on fini par penser à effectuer le Push sur le serveur lorsque cela est nécessaire.

L’autre inconvénient est d'être forcé à télécharger l'intégralité du dépôt au lieu d'un sous-dossier comme on pouvait le faire dans SVN.

Par rapport a SVN, Mercurial est lent au niveau de la copie vers le serveur central ( commande push).