J'essaie de choisir un flux de travail Git qui convient le mieux à notre produit. Voici les paramètres:
- Nous faisons quelques sorties majeures par an, disons 10 au maximum
- Nous avons plusieurs versions de notre produit actives en même temps (certaines personnes sont sur v10.1, certaines sur v11.2, etc.)
- Nous devons être en mesure de travailler sur plusieurs versions en même temps (afin que nous puissions travailler sur la version 12.1, mais à la fin de la version, nous commençons à travailler sur la version 12.2 en même temps)
- Nous devons pouvoir corriger les versions lorsque des bogues critiques sont détectés
Jusqu'à présent, voici comment je pense que cela pourrait fonctionner:
- Un seul dépôt à distance est utilisé
- Créer la branche 12.1 à partir du maître
- Créez des branches de fonctionnalités basées sur 12.1, validez-les et fusionnez à nouveau dans 12.1, appuyez sur
- Une fois que nous devons commencer à travailler sur la future version, créez une nouvelle branche 12.2 basée sur 12.1
- À partir de là, lorsque vous travaillez sur une fonctionnalité pour 12.1, créez une branche à partir de 12.1, validez les modifications et fusionnez dans les deux 12.1 et 12.2, appuyez sur
- Si vous travaillez sur une fonctionnalité pour 12.2, créez une branche à partir de 12.2, validez les modifications et fusionnez uniquement dans 12.2, appuyez sur
- Lorsque la version 12.1 est terminée, fusionnez-la dans la branche master et tag master avec 12.1
- Si un correctif est nécessaire, créez une branche de correctif à partir de la plus ancienne branche de version qui en a besoin, validez les modifications et fusionnez à nouveau dans toutes les branches de version pour cette version et les versions futures qui pourraient être affectées; si la dernière branche de version stable a été affectée, fusionnez-la dans master.
J'ai quelques inquiétudes:
- Je ne suis pas sûr que la fusion de correctifs à partir d'anciennes branches dans de nouvelles branches sera un processus fluide, surtout s'il y a eu beaucoup de changements qui se chevauchent; serait-il plus judicieux de simplement corriger manuellement dans chaque branche dans les cas où il semble y avoir des conflits
- Les modèles de workflow que j'ai vus semblent ne pas garder les branches des versions en vie, une fois cela fait, la version est fusionnée dans master, étiquetée et supprimée. Mon problème avec cela est que je n'ai pas une bonne idée de comment gérer l'état de la version si je n'ai que des balises dans le master, semble plus facile à corriger dans une branche et puis j'ai une version à laquelle je peux toujours revenir qui a le dernier correctif (je peux même marquer les correctifs dans la version). Je ne suis pas sûr qu'il y ait un moyen de revenir en arrière dans master et d'une manière ou d'une autre d'avoir une copie de la version avec des correctifs appliqués et de mettre à jour cette balise.
Les commentaires sont appréciés sur les choses que j'ai peut-être négligées ou sur les meilleures façons d'accomplir les choses compte tenu des exigences que j'ai spécifiées.