32 votes

DVCS, comme Git, est-il inapproprié pour les équipes utilisant l'intégration continue?

Mon équipe, les processus de développement sont basés sur l'intégration continue. La seule branches que nous créons sont les branches de maintenance quand nous libérer, mais sinon, les développeurs devraient s'engager régulièrement (tous les jours si pas plus souvent), du tronc, de sorte que le travail est toujours intégrée, continuellement testé, et toutes ces bonnes choses.

Ma compréhension de DVCS est qu'il est idéal pour le branchement. J'ai travaillé il y a quelques années dans une équipe où cela aurait été très utile, comme tous les bits de développement a été fait sur une branche, et mélangés uniquement lorsque complet et testé. Mais ce fut une autre philosophie de l'intégration continue.

Mais il me semble que pour une équipe qui utilise de l'intégration continue, le groovy caractéristiques de DVCS des outils comme Git ne serait pas particulièrement pertinent, et peut même entraver le processus d'intégration continue si les modifications de la fusion nécessite des étapes supplémentaires qui peuvent être oubliés.

Je suis sûr qu'il ya d'autres avantages d'un DVCS (p. ex. validation est très rapide car elle est locale, probablement de la fusion avec la branche principale pourrait arriver dans l'arrière-plan alors que le réalisateur porte sur le travail).

Mais pour cette question, je suis intéressé par la façon dont les équipes qui utilisent des DVCS et de l'intégration continue concilier les deux apparemment contradictoires philosophies. Je suis principalement intéressé à entendre des gens qui sont en train de faire cela.

32voto

bialix Points 6270

En fait DVCS fait de l'intégration continue beaucoup plus facile.

Avec la centrale de VCS, chaque développeur a le droit de s'engager directement dans le coffre et, par conséquent, il peut valider code bogué. CI détectera elle après le fait. Il est donc possible d'avoir cassé le tronc même de l'ec.

D'autre part, les opérations de base de DVCS monde sont les branches et la fusion. Parce que la fusion est explicite et distincte de l'évaluation par rapport à commettre le tronc, on peut toujours vérifier le résultat d'une fusion avant qu'il pose sur le coffre. Je n'ai pas d'expérience avec Git, mais les développeurs de Bazar VCS ont utilisé cette technique avec succès pendant au moins 3,5 ans avec l'aide de PQM outil.

Fondamentalement PQM flux de travail ressemble comme suit: développeur publie sa direction, de sorte qu'il peut être fusionné, puis il envoie un e-mail à l'PQM bot avec fusion des instructions. Lorsque PQM reçoit une demande de fusion, il fait un distinct direction de l'intégration (copie de tronc), puis fusionne le développeur de la direction générale et exécute les tests sur le code résultant. Si tous les tests sont passés ensuite à la direction de l'intégration est poussée vers le tronc, sinon le développeur recevrez un e-mail avec le journal de la faute de tests.

L'exécution de tous les tests pour le Bazar de projet prend du temps, mais les tests sont exécutés à la demande sur un serveur distinct. Les développeurs n'ont pas à être bloqué par des fusions et peut continuer à travailler sur d'autres tâches.

Comme résultat de PQM-en fonction de fusion de flux de travail de la bzr tronc n'est jamais rompu (au moins aussi longtemps que il ya assez de l'acceptation et de tests de régression).

7voto

William Pursell Points 56211

Tous les DVCS pouvant être utilisés avec un flux de travail utilisant un référentiel centralisé, il n'y a pas de problème. La stratégie indique que le développeur doit appliquer ses modifications au référentiel central exactement de la même façon que les modifications de stratégie dictées sont validées sur un VCS non distribué. Les outils supplémentaires qui permettent au développeur de modifier des ensembles de correctifs ne constituent en aucun cas un obstacle, mais permettent en réalité de générer beaucoup plus facilement une base de code maintenable.

6voto

Mark van Lent Points 3752

À l'aide d'un DVCS comme Git ne vous empêche pas de commettre à un référentiel central régulièrement. Toutefois, cela ne signifie pas que vous pouvez faire intermédiaire s'engage localement et seulement pousser les modifications vers le dépôt central une fois que vous avez terminé.

De cette façon, vous avez les avantages de la source de contrôle, même lorsque vous êtes à mi-chemin de la mise en œuvre d'une fonction, sans rupture de construire pour les autres développeurs.

5voto

Jakub Narębski Points 87537

Outils d'Intégration continue comme Hudson support pour les DVCS, donc je suppose que c'est possible de concilier intégration continue avec le contrôle de version distribué.

Tout d'abord, je pense qu'avec DVCS à l'aide de flux de travail comme sujet de la branche de flux de travail CI peut-être moins nécessaire. Deuxièmement, vous pouvez mettre en place (centrale unique) intégration continue de dépôt où vous appuyez lorsque vous êtes prêt, et les crochets de faire CI.


Ajouté 07-08-2009:

Voir, par exemple, l'Intégration Continue de Nettoyage de Printemps post sur GitHub Blog.

1voto

mdoar Points 4221

Deux idées que j'ai trouvé de l'aide, explique ceci:

  • DVCS des livraisons séparées de fusions.
  • CI va à l'encontre d'un dépôt que vous choisissez.

Ainsi, le cœur de la question est de savoir comment les fusions sont faites dans les dépôts que vous voulez exécuter un outil CI contre. Vous pouvez choisir d'avoir un référentiel lorsque vous démarrez.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X