Que voient les gens ici comme les forces et les faiblesses relatives de Git, Mercurial et Bazaar?
À mon avis, la force de Git est sa conception sous-jacente propre et son ensemble très riche de fonctionnalités. Il a également, je pense, le meilleur support pour les référentiels multi-branches et la gestion des flux de travail lourds. Il est très rapide et a une petite taille de référentiel.
Il a quelques fonctionnalités qui sont utiles mais qui demandent quelques efforts pour s'y habituer. Ceux-ci incluent un ara intermédiaire visible (index) entre la zone de travail et la base de données du référentiel, ce qui permet une meilleure résolution de fusion dans les cas plus compliqués, le comitting incrémental et le comitting avec un arbre sale; détecter les renommés et les copies en utilisant une heuristique de similitude plutôt que de les suivre en utilisant une sorte d'ID de fichier, qui fonctionne bien et qui permet de blâmer (annoter) qui peut suivre le mouvement du code à travers les fichiers et pas seulement les renommages en gros.
L'un de ses inconvénients est que la prise en charge de MS Windows est à la traîne et n'est pas complète. Un autre inconvénient perçu est qu'il n'est pas aussi bien documenté que Mercurial par exemple, et qu'il est moins convivial que la concurrence, mais cela change.
À mon avis Mercurial force de réside dans ses bonnes performances et sa petite taille de référentiel, dans son bon support MS Windows.
Le principal inconvénient est à mon avis le fait que les branches locales (plusieurs branches dans un seul référentiel) sont toujours des citoyens de seconde classe, et implémentent de manière étrange et compliquée des balises. De plus, la façon dont il traite les renommages de fichiers était sous-optimale (mais cette migration a changé). Mercurial ne prend pas en charge les fusions octopus (avec plus de deux parents).
D'après ce que j'ai entendu et lu principal avantages de Bazaar sont la prise en charge facile du flux de travail centralisé (ce qui est également un inconvénient, avec des concepts centralisés visibles là où il ne devrait pas), le suivi des changements de noms de fichiers et de répertoires.
Son principal inconvénient est la performance et la taille du référentiel pour les grands référentiels avec une longue histoire non linéaire (les performances améliorées au moins pour les référentiels pas trop grands), le fait que le paradigme par défaut est un ranch par référentiel (vous pouvez le configurer pour partager des données, cependant) , et des concepts centralisés (mais cela aussi de ce que j'ai entendu des changements).
Git est écrit en C, en scripts shell et en Perl, et est scriptable; Mercurial est écrit en C (core, pour les performances) et Python, et fournit une API pour les extensions; Bazaar est écrit en Python et fournit une API pour les extensions.
En considérant chacun d'eux ensemble et par rapport aux systèmes de contrôle de version comme SVN et Perforce, quels problèmes faut-il considérer?
Les systèmes de contrôle de version comme Subversion (SVN), Perforce ou ClearCase sont des systèmes de contrôle de version centralisés . Git, Mercurial, Bazaar (ainsi que Darcs, Monotone et BitKeeper) sont des systèmes de contrôle de version distribués . Les systèmes de contrôle de version distribués permettent une gamme beaucoup plus large de flux de travail. Ils permettent d'utiliser "publier quand prêt". Ils ont une meilleure prise en charge pour la création de branches et la fusion, ainsi que pour les flux de travail lourds. Vous n'avez pas besoin de faire confiance aux personnes ayant un accès avec engagement pour pouvoir obtenir des contributions de leur part de manière simple.
Lors de la planification d'une migration de SVN vers l'un de ces systèmes de contrôle de version distribués, quels facteurs considérez-vous?
L'un des facteurs que vous voudrez peut-être prendre en compte est la prise en charge de l'inetracting avec SVN; Git a git-svn, Bazaar a bzr-svn et Mercurial a l'extension hgsubversion.
Clause de non-responsabilité: Je suis un utilisateur Git et un petit contributeur, et je regarde (et je participe à) la liste de diffusion git. Je ne connais Mercurial et Bazaar que par leur documentation, diverses discussions sur IRC et les listes de diffusion, et des articles de blog et des articles comparant divers systèmes de contrôle de version (dont certains sont répertoriés sur la page GitComparison sur Git Wiki).