Mon anglais n'est pas assez bon pour comprendre l'explication de git flow
Pour ma compréhension.
Master branch
est destiné aux produits prêts à l'emploi pouvant être téléchargés sur le marché par les utilisateurs.
Mais il y a un release branches
Je n'ai aucune idée que ces branches soient disponibles pour qui?
Libération pour les clients? ou pour l'assurance qualité?
Une fois que develop
a acquis suffisamment de fonctionnalités pour une version (ou qu'une date de sortie prédéterminée approche), vous créez une branche de version hors de develop. La création de cette branche démarre le cycle de publication suivant, donc aucune nouvelle fonctionnalité ne peut être ajoutée après ce point . Uniquement les corrections de bugs, la génération de documentation et d'autres tâches orientées vers la version devraient aller dans cette branche (qui inclut également les tests). Une fois prête à être expédiée, la version est fusionnée dans master et étiquetée avec un numéro de version. De plus, il devrait être fusionné dans develop, qui peut avoir progressé depuis le lancement de la version.
L'utilisation d'une branche dédiée pour préparer les versions permet à une équipe de peaufiner la version actuelle tandis qu'une autre équipe continue de travailler sur les fonctionnalités de la prochaine version. Il crée également des phases de développement bien définies (par exemple, il est facile de dire "cette semaine, nous nous préparons pour la version 4.0" et de le voir réellement dans la structure du référentiel).
Plus d'infos ici pour les succursales
Comme expliqué dans l'original post de V.Driessen :
Master est une branche permanente qui reflète toujours un état prêt pour la production. Alors oui, c'est pour des produits prêts à l'emploi téléchargeables sur le marché par l'utilisateur.
Release est une branche de support temporelle pour prendre en charge la préparation d'une nouvelle version de production. Cela signifie principalement la correction de bogues, la documentation, etc., comme le soulignent les minas.
Dans le diagramme auquel vous avez lié, oui, master
est utilisé pour un "produit prêt" qui est distribué aux utilisateurs. (Cependant, tout le monde n'utilise pas master
de cette façon.)
Dans le diagramme, chaque fois que l'équipe prépare une nouvelle version "produit prêt", elle crée une nouvelle branche "version". Pendant qu'ils préparent la version, ils n'ajoutent aucune nouvelle fonctionnalité à la branche "release" - l'ajout de nouvelles fonctionnalités pourrait provoquer de nouveaux bugs, et ils essaient d'obtenir la version "release" aussi stable que possible avant qu'elle ne devienne publique . Ils ajoutent des commits à la branche "release" pour résoudre tous les problèmes rencontrés lors des tests finaux, peaufinent les points difficiles, etc. Ainsi, la création de la branche "release" marque le point de "gel des fonctionnalités" - où ils décident que seul le les fonctionnalités qu'ils ont déjà développées feront leur apparition dans la prochaine version publique.
Une fois qu'ils sont prêts à rendre publique une nouvelle version du produit, ils fusionnent la branche "release" dans master
et marquent le commit qui est utilisé pour construire le produit téléchargeable publiquement. (S'ils publient la version 1.0, ils pourraient marquer le commit 1.0
, etc.)
En même temps, alors qu'ils travaillent sur de nouvelles fonctionnalités, ils créent de nouvelles branches "fonctionnalités" (se ramifiant à partir de develop
) et s'y engagent. Lorsqu'une nouvelle fonctionnalité fonctionne, ils fusionnent à nouveau sa branche dans develop
. develop
va toujours de l'avant.