Divulgation : Ceci est un poste secondaire d'un autre fil de discussion qui était axé sur git, mais j'ai fini par recommander mercurial de toute façon. Il traite de DVCS dans un contexte d'entreprise en général, donc j'espère que la publication croisée est acceptable. Je l'ai un peu modifié pour mieux répondre à cette question :
Contrairement à l'opinion générale, je pense que l'utilisation d'un DVCS est un choix idéal dans un contexte d'entreprise car il permet des flux de travail très flexibles. Je parlerai d'abord de l'utilisation d'un DVCS par rapport à un CVCS, des meilleures pratiques, puis de git en particulier.
DVCS vs. CVCS dans un contexte d'entreprise :
Je ne parlerai pas ici des avantages et inconvénients généraux, mais je me concentrerai plutôt sur votre contexte. Il est communément admis que l'utilisation d'un DVCS requiert une équipe plus disciplinée que l'utilisation d'un système centralisé. Cela est dû au fait qu'un système centralisé vous offre un moyen facile de appliquer votre flux de travail, l'utilisation d'un système décentralisé requiert plus de communication et la discipline pour s'en tenir aux conventions établies. Bien que cela puisse sembler induire des frais généraux, je vois un avantage dans la communication accrue nécessaire pour en faire un bon processus. Votre équipe devra communiquer au sujet du code, des changements et de l'état du projet en général.
Une autre dimension dans le contexte de la discipline est d'encourager les ramifications et les expériences. Voici un extrait d'un récent article de Martin Fowler sur bliki sur les outils de contrôle de version il a trouvé une description très concise de ce phénomène.
Le DVCS encourage les embranchements rapides pour l'expérimentation. Vous pouvez faire des branches dans Subversion, mais le fait qu'ils sont visibles par tous décourage les gens d'ouvrir une branche pour travail expérimental. De même, un DVCS encourage les points de contrôle du travail : commettre des changements incomplets, qui qui ne compilent pas ou ne passent pas les tests. votre dépôt local. Encore une fois, vous pouvez faire cela sur une branche de développement dans Subversion, mais le fait que de telles branches sont dans l'espace partagé rend les gens sont moins enclins à le faire.
Les DVCS permettent des flux de travail flexibles parce qu'ils fournissent un suivi des jeux de modifications par le biais d'identifiants uniques au monde dans un graphe acyclique dirigé (DAG) au lieu de simples différences textuelles. Cela leur permet de suivre de manière transparente l'origine et l'historique d'un jeu de modifications, ce qui peut être très important.
Flux de travail :
Larry Osterman (un développeur de Microsoft travaillant dans l'équipe Windows) a une excellent article de blog sur le flux de travail qu'ils emploient dans l'équipe Windows. Plus particulièrement, ils ont :
- Un tronc de code propre et de haute qualité uniquement (master repo)
- Tout le développement se fait sur les branches de fonctionnalité
- Les équipes de fonctionnalité ont des dépôts d'équipe
- Ils fusionnent régulièrement les dernières modifications du tronc dans leur branche de fonctionnalité ( Forward Integrate )
- Les fonctionnalités complètes doivent passer plusieurs tests de qualité, par exemple la révision, la couverture des tests, les questions et réponses (dépôts autonomes).
- Si une fonctionnalité est terminée et que sa qualité est acceptable, elle est intégrée au tronc ( Inverser l'intégration )
Comme vous pouvez le constater, le fait que chacun de ces référentiels soit autonome permet de découpler les différentes équipes qui avancent à des rythmes différents. La possibilité de mettre en œuvre un système flexible de contrôle de la qualité distingue également le DVCS du CVCS. Vous pouvez également résoudre vos problèmes de permission à ce niveau. Seule une poignée de personnes devrait être autorisée à accéder au master repo. Pour chaque niveau de la hiérarchie, ayez un repo séparé avec les politiques d'accès correspondantes. En effet, cette approche peut être très flexible au niveau de l'équipe. Vous devriez laisser à chaque équipe le soin de décider si elle souhaite partager son repo d'équipe entre elles ou si elle souhaite une approche plus hiérarchique où seul le chef d'équipe peut s'engager dans le repo d'équipe.
(L'image est volée à l'ouvrage de Joel Spolsky intitulé hginit.com .)
Une chose reste à dire à ce stade, même si DVCS offre de grandes capacités de fusion, c'est jamais un remplacement de l'utilisation de l'intégration continue. Même à ce stade, vous disposez d'une grande flexibilité : CI pour le trunk repo, CI pour les repos d'équipe, les repos Q&A, etc.
Mercurial dans un contexte d'entreprise :
Je ne veux pas lancer une guerre de mots entre git et hg ici, vous êtes déjà sur la bonne voie en envisageant de passer à DVCS. Voici quelques raisons d'utiliser Mercurial au lieu de git :
- Toutes les plates-formes qui utilisent python sont supportées.
- Excellents outils d'interface graphique sur toutes les principales plates-formes (win/linux/OS X), intégration d'outils de fusion/diffusion de premier ordre.
- Interface très cohérente, transition facile pour les utilisateurs de svn
- Peut faire la plupart des choses que git peut faire aussi, mais fournit une abstraction plus propre. Les opérations dangereuses sont toujours explicites. Les fonctionnalités avancées sont fournies via des extensions qui doivent être explicitement activées.
-
Un soutien commercial est disponible de selenic.
En bref, lorsque l'on utilise le DVCS dans une entreprise, je pense qu'il est important de choisir un outil qui introduit le moins de friction possible. Pour que la transition soit réussie, il est particulièrement important de tenir compte des compétences variables des développeurs (en ce qui concerne les VCS).
Il y a quelques ressources que j'aimerais vous indiquer à la fin. Joel Spolsky a récemment écrit un article battant en brèche beaucoup d'arguments avancés contre le DVCS. Il faut préciser que d'autres ont découvert ces contre-arguments bien avant. Une autre bonne ressource est le blog d'Eric Sinks, où il a écrit un article sur Obstacles à un DVCS d'entreprise .