Git/Mercurial/Bazaar/Darcs c’est un peu la même popote, c’est du contrôle de version décentralisé, ou on peut ne pas avoir besoin de serveur centralisé, dans la théorie, dans la pratique c’est quand même mieux d’en avoir un.
Ce qu’ils apportent par rapport au classique SVN/CVS (die CVS die, nous ne le répeterons jamais assez), c’est une souplesse inégalé pour la gestion des branches. La branche ne se voit plus comme un élément figé “oh mon dieux c’est dans /branches de SVN ça fait peur” à “bon bah j’ai une tache, jme fait une branche pour pas casser l’état propre et je ferait un merge après”. De plus il y a un nouveau niveau dans la gestion de donnée, le commit se fait sur ta copie locale du dépôt et un push envoi les les nouvelles données pour les branches communes au serveur distant (faut s’y faire un peu à celui là).
Donc joie, on peut travailler, commiter, pusher & parcourir le log en étant déconnecté du serveur. Le fait que tout soit en local file un sacré boost en performances également, le commit en 0.01s, c’est toujours agréable, surtout si on commit plusieurs fois avant d’envoyer toutes les modificatoins au serveur.
Pour parler de ceux que j’ai utilisé plus ou moins brièvement :
[ul]
[li]Darcs : on oublie, supporte mal la charge, très peu utilisé en dehors du monde des haskelleur[/li][li]Bazaar : réalisé en python, possède une Gui qui fonctionne sous windows, mais aux traductions douteuses. Version en ligne de commande parfaitement utilisable.[/li][li]Git : Pour moi c’est la star du moment, rapide, mais TortoiseGit encore jeune sous windows et des commandes au nom étrange pour pas grand chose *, pas forcément intuitif en ligne de commande. Fonctionne bien sous Windows (version MingW/Msys)[/li][/ul]
Ma préférence va pour git, parce que je le connais bien, mais basiquement, t’en connais un, tu peux switcher avec n’importe quel autre rapidement. Par contre il faut prévoir une petite semaine d’adaptation en venant de svn/cvs pour bien prendre le plis.
Pour les désavantages, ben c’est plus compliqué, ça peut partir dans tous les sens, et pour pousser des non-techniciens à utiliser les systèmes distribués (même avec une interface), c’est pas gagné. Les outils autours sont aussi plus jeunes et moins bien paufinés que toute la gamme d’outil pour SVN par exemple, il y a moins d’hébergeur également. Un autre problème également, sous git, on perd le numéro de révision au profit d’un hash SHA-1, wouuh génial, on peut pas falsifier un commit, mais pas pratique pour remonter dans le temps facilement, heureusement il existe une interface minimaliste pour aider à retrouver la bonne révision. Et quand on maitrise pas, on peut facilement recréer un métro au niveau des branches :

(quand on se limite, c’est moins porky quand même)
- oui je pense à vous git push master:/ref/origin/master et git push :/ref/origin/master (pour ajouter et supprimer une branche lointaine, respectivement)
Ce post vous a été offert par l’association des anglicisme anonymes.