2 votes

Flux Git et synchronisation des branches de fonctionnalités

Je viens de Perforce, alors veuillez excuser ma question de débutant. J'évalue git et son modèle d'intégration. Dans Perforce, j'ai un master et un develop branche. feature1 y feature2 sont ramifiés de develop - donc similaire à git flow, sauf que les modifications de master retourner dans le feature branches, donc un modèle d'intégration circulaire.

   master-------+-----+
              |     |
   +-develop    |     |
                   | 
     +-----feature1-+ |

     +------------feature2

Cela résout un gros problème dans notre pipeline C++. Quelqu'un fusionne ses fonctionnalités dans develop et supposons qu'il y ait une erreur de compilation due à un conflit mal résolu, etc. (les développeurs ne peuvent tout simplement pas résoudre tous les problèmes localement à cause des 8 cibles différentes). Ils soumettent donc le projet, le compilent sur le serveur de compilation et corrigent les problèmes qui subsistent. Seulement si develop compile sur toutes les plates-formes, les changements seront fusionnés en master . Donc c'est comme une branche de sécurité pour que rien de cassé ne finisse en master . Avec cette solution, chaque développeur peut être assuré que toute intégration de master dans son feature La branche est propre et fonctionne.

Maintenant, ma question est la suivante : comment cela est-il possible avec le flux git ? Comment les fonctionnalités passent-elles d'une branche de fonctionnalités à une autre sans problème ?

2voto

Jonas Points 143

Politiques de la branche

Comment n'avoir que des builds en cours d'exécution sur votre branche master

D'après ce que j'ai compris, git pur n'offre pas une telle fonctionnalité. En fait, vous pouvez fusionner chaque commit avec un autre sans limitations.

Néanmoins, ce dont vous avez besoin, ce sont des politiques dites de branche. Celles-ci ne font pas partie de git pur mais certains vendeurs les proposent. Tout dépend donc de l'endroit où vous hébergez votre dépôt. Je ne veux pas faire de publicité pour Microsoft mais, à mon avis, Azure DevOps est exactement ce dont vous avez besoin.

Aquí est un lien sur les politiques de branche dans git pour Azure DevOps. Je recommande la partie concernant la validation de la construction qui n'autorise une fusion sur la branche principale que si la construction a réussi.

Il est possible que d'autres fournisseurs proposent ce genre de choses, mais je ne le sais pas exactement puisque je travaille principalement avec Azure DevOps.

Modèle de branchement de Git

Comment travailler avec vos branches

En ce qui concerne les flux de travail git et les modèles de branchement, il existe plusieurs approches, chacune présentant des avantages et des inconvénients. Si vous voulez continuer à travailler avec l'idée de base de vos branches à partir de Perforce, je recommande ce modèle de ramification.

En ce qui concerne votre question

si les "fusions/intégrations d'anneaux/de cycles" sont même possibles, courantes ou recommandées

Je pense pouvoir répondre à cette question par "Oui, c'est possible et de bon sens, mais je ne les appellerais pas des anneaux ou des cercles". Le modèle de branche présenté sur le site Web est un bon exemple de la manière d'utiliser les fusions pour échanger des informations entre vos branches.

Conclusion

  • Utilisez les politiques de branche pour protéger votre branche principale. Seul le code fonctionnel sera livré.
  • Utiliser le modèle de branchement pour fusionner les changements entre branches

Santé et bonne chance !

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