Où vont les corrections de bugs dans le modèle git-flow?

14

Dans le, communément appelé, les correctifs du modèle Git-flow vont dans leur hotfix-*branche spécifique et les petits correctifs d'intégration juste avant la sortie vont dans la release-*branche. Les corrections de bugs généraux de la version précédente ne semblent pas avoir leur place.

Où devraient-ils apparaître? Doivent-ils être dans leur propre bug-*branche de ramification develop(tout comme les featurebranches)?

Chaussure
la source
3
Pourquoi un bogue non critique dans le code publié serait-il différent d'une petite fonctionnalité pour produire un comportement différent de ce que fait actuellement l'application?
Bart van Ingen Schenau
@BartvanIngenSchenau Recommandez-vous qu'ils soient des feature-*succursales? Un correctif sur un comportement erroné peut-il être considéré comme une fonctionnalité?
Chaussure
1
@Shoe Je pense que ce que Bart veut dire, c'est que vous devez les traiter comme des fonctionnalités, sans nécessairement utiliser le même préfixe de branche .
Darkhogg
3
@Shoe: dans git-débit, une branche sauf master, develop, release-*ou hotfix-*est une branche de fonction, de sorte que vous pouvez utiliser un préfixe que vous aimez et utiliser un préfixe différent pour les bugs. En outre, quelle est la différence entre un comportement erroné qui fonctionne comme spécifié et un comportement erroné qui s'écarte de la spécification? Dans les deux cas, il s'agit d'un comportement erroné, mais seul le dernier est un bogue.
Bart van Ingen Schenau

Réponses:

9

La réponse courte: Oui, les branches pour les corrections de bogues qui entrent dans une prochaine version prévue devraient être dans les branches de fonctionnalités. La façon dont vous nommez les branches de fonctionnalité ou ces branches pour les corrections de bogues dépend de vous et des normes de votre équipe, mais elles doivent être traitées de manière identique si vous suivez Gitflow.


Le commentaire de Bart van Ingen Schenau soulève un bon point.

Gitflow a cinq types de succursales: master, develop, branches de correctif (préfixées hotfix-), des branches de libération (préfixées release-, et les branches fonctionnelles La. masterEt les developbranches sont des branches de longue durée et vous ne commettez pas directement les Les. release-Branches sont faites pour tracer une ligne pour une version particulière, puis prend en charge les correctifs de bogues entre l'identification de la prochaine version et la version. Les hotfix-branches sont spécifiquement destinées aux versions critiques hors cycle en production. Les feature-branches sont destinées au développement de fonctionnalités individuelles pour une version future.

En venant de milieux où sont utilisés et PRs de côté d'un développeur individuel engageant à une branche de fonction, rien ne doit être engagée directement dans master, developou une branche de sortie. Cela garantit que chaque changement est révisé par le code, tout en garantissant une couverture de test appropriée et la réussite des tests dans un environnement CI avant que les changements ne soient effectués. Je n'ai aucun problème à valider des correctifs ou des modifications de bogues avant la publication directement dans la branche de publication, puis à les insérer dans le développement, puis dans les branches de fonctionnalités.

Dans votre cas particulier, une release-succursale n'est pas un endroit approprié. Le logiciel a déjà été publié et est en cours master. Une fois qu'une version est fusionnée dans master et y est étiquetée, la branche de publication de cette version particulière a dépassé son objectif et n'a plus nécessairement besoin d'exister. Si vous êtes actif dans le nettoyage de vos succursales (ce que je pense que tout le monde devrait être), ce n'est même pas une option.

Si votre correctif n'est pas critique, une branche de correctifs ne semble pas convenir non plus. Le but d'une branche de correctifs est de permettre à quelqu'un d'obtenir des changements critiques dans la production très rapidement sans interférer avec le développement en cours. Leur utilisation devrait être l'exception plutôt que la norme pour une équipe de développement. En général, les correctifs critiques devraient être un cas exceptionnel.

La seule chose qui reste est une branche de fonctionnalité. Notez que la section de la page liée à la question sur les branches de fonctionnalité dit même que les branches de fonctionnalité sont "parfois appelées branches de rubrique". Si votre modification cible une version à venir et ne répond pas aux critères d'un correctif, elle doit se trouver dans l'une de ces branches.

Thomas Owens
la source
Nous convenons qu'il ne devrait y avoir aucun engagement direct pour maîtriser, développer ou libérer des branches. Mais quel devrait être le flux PR lorsque vous trouvez un bogue dans la branche de publication et qu'il doit être corrigé dans les deux branches de publication et de développement. Cela a ses propres défis si toute votre branche de publication n'est pas encore prête à être fusionnée dans le développement, mais la correction de bogue doit être effectuée aux deux endroits .. Si vous le souhaitez, je peux poster une nouvelle question à ce sujet.
Sap
@Sap Une nouvelle question serait une bonne chose, mais si vous la postez, veuillez expliquer pourquoi le correctif est si critique qu'il doit être fusionné dans les deux - cela semble impliquer qu'un problème critique n'a pas été trouvé avant son introduction develop, non trouvé entre le moment où il a été introduit et la création de la branche de publication, et / ou que votre branche de publication existe depuis longtemps. Simplement, cependant, je crois que le seul choix est une sélection (je suggérerais une demande de correction et d'extraction dans la branche de publication, une fusion dans la branche de publication et une sélection de cerise dans le développement via une demande d'extraction).
Thomas Owens
4

S'il s'agit d'une seule validation, effectuez simplement une validation bien identifiée et poussez-la au-dessus de la branche de développement, sinon créez une branche de fonctionnalité.

Il y a aussi un commentaire de l'auteur de git-flow disant exactement ce que vous demandez: Branches de correction de bogues manquantes # 24

Deb
la source
Merci, ce lien que vous avez partagé m'a éclairé.
arcseldon