Jon Purdy a la bonne idée. git flowLa gestion réelle de ces succursales est également facile, et la gestion des succursales est un argument en faveur de la transition git.
Commençons par une diminution des effectifs de base git, puisque vous venez de la svn-à- gitperspective. Considérons dans gitce qui suit:
master--...............-.....-..............-
\ / / /
---develop---------............../
\ /
--feature---
Ci-dessus, vous branchez mastervers develop(indiqué par le \) et branchez developvers une featurebranche. Nous fusionnons ces branches (notées par /), avec commits ( -) le long d’une branche. (S'il n'y a pas de commit mais que la fusion va très à droite, il y a des .indicateurs pour montrer que le prochain -est le prochain commit).
Assez facile. Et si nous avons un correctif dans notre version principale?
master--...............-.....-................-...........-.........-
\ / / / \ /| /
\ / / / -hotfix-- V /
---develop---------............../..............-...----
\ / \ V /
--feature--- --feature2...----
Ci-dessus, developramifié de master. Le bogue découvert dans a masterété corrigé en séparant master, en le corrigeant et en le fusionnant master. Nous avons ensuite fusionné masterdans develop, puis developdansfeature2 , qui a intégré le nouveau code hotfixdans ces branches.
Lorsque vous fusionnez feature2à develop, son histoire inclut developavec le hotfix. De même, developest fusionné feature2avec le nouveau code de master, si la fusion de developretour à masterva se passer sans accroc, car il est basé sur cette livraison en masterà ce moment - là, comme si vous aviez ramifié à partir masterà ce moment - là.
Alors, voici une autre façon de le faire.
master--..........-........-
\ /\ /
---1.0-- --1.1--
Vos 1.0 versions se tagged- 1.0.1, 1.0.2, 1.0.3, et ainsi de suite.
Maintenant, voici une astuce: vous avez trouvé un bogue dans la version 1.0 qui affecte les versions 1.1, 1.2 et 1.3. Que faire?
Vous branchez votre version la plus récente ou la plus ancienne maintenue et vous la corrigez. Ensuite , vous fusionnez votre nouvelle hotfixbranche en 1.3-et dans 1.2, 1.1et 1.0. Ne branchez pas depuis chacune des branches de la version de maintenance; ne fusionnez pas 1.0dans masterou ne fusionnez masterpas dans 1.0. Prenez une hotfixbranche et fusionnez-la dans toutes vos branches de version. S'il y a des conflits, cela vous le dira; révisez votre code pour vous assurer que les modifications sont correctes ( git diffest votre ami).
Maintenant, ce changement spécifique est appliqué partout. La lignée est ramifiée, mais ça va. Ce n'est pas un hasard. 1.3Marquez la tête en tant que 1.3.17, fusionnez-la dans chaque fonction en cours reliée 1.3et passez à autre chose.
L' git flowextension permet de gérer ces branches de maintenance, de fonctionnalités et de correctifs pour vous. Une fois que vous maîtrisez le flux de travail, cette opération est simple et simplifie énormément la gestion du code source.
J'ai déjà vu cela dans les équipes de programmation, mais je n'ai pas travaillé autant en tant que programmeur moi-même. Je suis donc en train de me familiariser avec le flux de travail quotidien.
gitbalise après chaque construction réussie? Cela présenterait l'avantage supplémentaire d'indiquer clairement lesgitcommits présentant des problèmes de construction ou d'échecs de test, car ils resteraient non étiquetés.