Quand faut-il créer des branches de développement?

11

Nous déplaçons l'équipe de notre projet de l'utilisation d'une seule branche principale / tronc à plusieurs branches de développement / travail qui devraient être régulièrement fusionnées dans Main. Nous basons notre nouveau processus sur cet article et le Guide de branchement TFS (nous utilisons TFS et Visual Studio 2010).

Actuellement, entre 1 et 5 personnes travaillent sur le projet à la fois. Main doit être stable à tout moment car nous voulons que l'option se libère quand nous en avons besoin. Nous n'avons pas de sprints fixes - du moins pas encore - et sortons actuellement toutes les 1-2 semaines.

À ce stade, chaque personne corrige des bogues dans l'application. Dans quelques semaines, nous commencerons le développement d'un nouveau grand composant pour l'application.

Un point critique que nous constatons est le moment où les branches de développement doivent être créées . Nous mettrons en œuvre plusieurs user stories en parallèle en fonction des compétences du développeur. Nous avons pensé à créer une branche pour chaque développeur mais cela n'a pas de sens car il y aura toujours un besoin de collaboration sur un travail. Nous ne pouvons pas nous en sortir avec une seule branche de développement, car nous voudrons fusionner avec Main pendant que les autres travaux sont terminés.

Quelqu'un at-il des conseils à ce sujet?

Alex Angas
la source
Que Dieu bénisse votre âme pour avoir utilisé TFS et créé des branches. Lors d'une phase précédente de mon entreprise, ils ont décidé d'utiliser TFS, et finalement tous les développeurs ont eu tellement peur du processus de fusion que la ramification s'est transformée en programmeur Fear Factor.
Jordan
@Jordan: Une peur pas totalement infondée.
Robert Harvey,

Réponses:

9

Je n'aime pas les branches arbitraires, c'est-à-dire les corrections de bugs de Fred ou les corrections de bugs d'Harry. Je suis beaucoup plus à l'aise avec une seule branche (indépendante) de fonctionnalité qui permet à plusieurs développeurs de fonctionner sur une seule fonctionnalité; mais pour que la fonctionnalité soit fusionnée uniquement lorsqu'elle est terminée.

Donc, pour le moment, vous n'avez besoin que de la branche "bugfix" mais une fois que vous avez commencé le développement, vous devez créer une branche pour chaque fonctionnalité importante. De cette façon, lorsqu'ils sont terminés, ils peuvent être fusionnés et libérés sans dépendre d'autres fonctionnalités plus bogues.

Je ne sais pas à quel point TFS est bon pour la fusion, mais je suis sûr que vous le saurez dans quelques mois :)

mcottle
la source
C'est assez proche de la façon dont nous le faisons là où je travaille. Si vous vous assurez uniquement de fusionner religieusement du tronc à chaque branche de travail chaque fois que des modifications le transforment en tronc, cela fonctionne très bien. En outre, examinez la configuration simultanée de versions automatisées. Savoir que chaque branche (telle que stockée dans le contrôle de code source) est toujours au moins dans un état constructible facilite les choses. Quant à la fusion à l'aide des outils de Visual Studio, cela fonctionne bien jusqu'à ce que vous ayez des lignes extrêmement longues avec des modifications des deux côtés de la fusion ...
un CVn
5

Nous ne pouvons pas nous en sortir avec une seule branche de développement, car nous voudrons fusionner avec Main pendant que les autres travaux sont terminés.

Il semble que vous sachiez déjà que plusieurs branches de développement doivent être créées. Deux scénarios probables viennent à l'esprit:

  1. Chacun des cinq développeurs travaille sur des parties indépendantes du projet (correction de bogues) - Assurez-vous qu'une branche individuelle est créée pour chaque développeur. Cela impose à chaque développeur la responsabilité et la responsabilité de s'assurer que son ensemble de modifications n'entre pas en conflit avec le travail de quelqu'un d'autre. Il est fort probable que l'un de vos cinq développeurs fasse une erreur. Si / quand c'est le cas, cela n'a aucun sens que tout le monde soit retenu.
  2. Développements de fonctionnalités multiples - Quel que soit le nombre de développeurs travaillant sur une fonctionnalité / un bug particulier, ceux-ci doivent être séparés. Un exemple de cet avantage est que toutes les validations de code font partie des fonctionnalités en cours de développement - il n'y a pas de seconde supposition impliquée.
JK
la source
1

Branches de travail implicites avec DVCS

Nous utilisons Mercurial donc il y a la branche de travail implicite sur la boîte de développement des développeurs. La validation est toujours effectuée dans l'espace de travail local. Lorsqu'un travail libérable est terminé, il est poussé vers le serveur de dépôt principal où il est automatiquement créé et testé.

Nous ne créons presque jamais de branches explicites, mais là encore, nos sprints ne durent jamais plus d'une semaine et les cartes ne prennent pas plus de 1 à 2 jours.

En outre, vous pouvez atténuer les problèmes de fusion en intégrant le travail provenant d'autres parties de code ou d'autres projets afin que les utilisateurs n'aient pas à effectuer des fusions difficiles tout le temps.

Dietbuddha
la source
0

J'ai utilisé à la fois une seule branche par histoire et une seule branche par version (tous les développeurs enregistrent leurs histoires à développer et si l'un de ces casse la branche de développement, elle est cassée pour tous). Je recommanderais fortement une branche par histoire si vous n'aimez pas les conflits. La branche dev restera toujours stable pour tous les développeurs et il n'y aura pas de temps d'attente pour un développeur travaillant sur un morceau de code qu'un autre développeur a déjà cassé. Lorsque votre histoire est terminée, tout votre code est dans votre branche. Vous le fusionnerez en dev mais pas en check-in et test, en cas de conflits vous le résoudrez et demanderez à la personne avec qui vous êtes en conflit d'éviter de supprimer son code. Fusionnez ensuite en dev. Cela aide tous les développeurs à travailler en douceur. Cela dépend également de la taille de l'entreprise. Notre entreprise compte 200 développeurs travaillant simultanément sur une seule base de code, mais branche distincte pour leurs histoires. Une fois le code fusionné avec la branche dev, la branche story est immédiatement supprimée. J'espère que ça aide. Merci

Sahib Khan
la source
0

Si cela est basé sur git, il vous suffit de créer une branche pour chaque correction de bogue, de corriger le bogue dans les plus brefs délais, de fusionner la branche de correction de bogue avec la branche de développement, puis de pousser la modification vers la branche de développement. L'examen des demandes de tirage et la fusion doivent être la priorité la plus élevée, car plus vite vous le faites, meilleures sont les chances que la fusion ne cause pas de problèmes. Une fois fusionnées, ces branches peuvent être supprimées.

gnasher729
la source