Calendrier
septembre 2009
L Ma Me J V S D
« août   oct »
 123456
78910111213
14151617181920
21222324252627
282930  

Mercurial : gestion de sources distribuée

Dans les solutions de gestion de sources, le modèle client-serveur, avec CVS et surtout SVN, a largement conquis le monde du développement en entreprise. Dans ce modèle, le développeur utilise un client dédié qui permet de se connecter à un serveur pour récupérer une copie locale d’une version précise du projet. Puis, une fois les modifications apportées au projet, le développeur bascule les modifications sur le serveur (Principe du checkout/commit). Enfin, pour éviter les conflits entre les modifications effectuées par différents développeurs, le modèle adopte soit le principe du verrouillage (seul le développeur qui souhaite modifier un source peut le faire), soit le principe de fusion (la dernière version d’un source est fusionnée avec la précédente).

En revanche, dans le domaine des projets communautaires, les développeurs utilisent de plus en plus des solutions utilisant un nouveau modèle : le modèle distribué. C’est le cas de projets comme python ou firefox qui ont adopté la solution Mercurial.

Dans une solution de sources dite “distribuée”, le principe consiste à ajouter un intermédiaire entre la copie de travail et le répertoire distant : le répertoire local, à partir duquel, désormais, vont se faire les checkout/commit classiques avant de transmettre les modifications effectuées au répertoire distant. Quel intérêt me direz vous à utiliser un tel système qui revient à “doublonner” le système C/S ?

En fait, un outil comme Mercurial permet de changer tout simplement d’échelle. Avec SVN, on est au niveau du fichier (au mieux d’une branche) alors qu’avec Mercurial, vous disposez en local d’un véritable “clone” du projet sur lequel vous avez la main pour tester, créer des branches, committer, revenir en arrière, etc. sans impacter forcément toute l’équipe de développement. Chacun peut maintenir sa propre branche dans son coin, avec ses propres patchs.

Un outil de gestion distribuée de versions est un outil qui permet à chacun de travailler à son rythme, de façon désynchronisée des autres, puis d’offrir un moyen à ses développeurs de s’échanger leur travaux respectifs.

Laisser une réponse