samedi 19 janvier 2008

Mercurial: Installation et utilisation

(Je reprends ce post de mon ancien blog avant qu'il ne rende définitivement l'âme)

Mercurial est un outils de gestion de configuration, tel CVS, SVN ou encore Clearcase. A ceci près qu'il est décentralisé, soit, sans serveur. Son modèle est censé faciliter la création de branches, ainsi que leurs merges, le point faible de SVN. J'explique dans ce qui suit comment l'utiliser à la maison.

J'ai un serveur Linux qui me fait également office de backup. J'ai un serveur SSH qui tourne dessus, et c'est par ce protocole que je communiquerai avec mon repository d'origine. Celui-ci possède la branche de départ de mon projet, c'est donc à partir de celui ci que le projet a été initialisé, comme suit:

- initialisation d'un repository, dans un directory que l'on a finement sélectionné:
hg init
hg add all
hg commit

Du côté de windows, on prendra soin d'installer Cygwin. Attention à bien sélectionner OpenSSH dans la catégorie Net des packages. La configuration de mercurial se résume à indiquer le binaire du client SSH dont on se servira entre mon repository de backup et ma branche de dev, sous mon pc windows. On doit alors ajouter dans la section UI de %MERCURIAL_DIRECTORY%\Mercurial.ini:
ssh = C:\cygwin\bin\ssh.exe

- On teste l'installation en clonant du côté de windows notre repository d'origine:
hg clone ssh://monlogin@mondomaine.nd ou mon ip/path_to_repo

- Au jour le jour, on commit, on ajoute des fichiers avec "hg add", on peut avoir le même genre de reflexes qu'avec SVN. Quand on commit, ca se passe néanmoins en local. Il faut considérer que tout dépôt cloné est à son tour dépôt, ou branche:
hg commit
On fera attention de renseigner une petit changelog. Si l'on ne modifie pas le fichier créé par mercurial et ouvert dans l'éditeur de texte par défaut au moment du commit, la transaction sera considérée comme avortée.

- Reporter les modifs sur le repository d'origine:
hg push

- Update du repository d'origine:
hg update

- Merge du repository d'origine dans notre branche:
hg merge
hg commit

Une aide agréable, l'inévitable quick ref card, que je link ici.

Plus D'info: http://www.selenic.com/mercurial/wiki/index.cgi/QuickStart

Annexe:
Le fichier .hgignore pour ignorer les fichiers relatifs au développement c#:

syntax: glob
*.dll
*.pdb
*.exe
*.config
*.Cache
*.Filelist.txt
*.resources
*\obj\*
*.bak
*.suo

Aucun commentaire: