Jon Purdy a la bonne idée. git flow
La 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
-à- git
perspective. Considérons dans git
ce qui suit:
master--...............-.....-..............-
\ / / /
---develop---------............../
\ /
--feature---
Ci-dessus, vous branchez master
vers develop
(indiqué par le \
) et branchez develop
vers une feature
branche. 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, develop
ramifié 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é master
dans develop
, puis develop
dansfeature2
, qui a intégré le nouveau code hotfix
dans ces branches.
Lorsque vous fusionnez feature2
à develop
, son histoire inclut develop
avec le hotfix
. De même, develop
est fusionné feature2
avec le nouveau code de master
, si la fusion de develop
retour à master
va 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 hotfix
branche en 1.3
-et dans 1.2
, 1.1
et 1.0
. Ne branchez pas depuis chacune des branches de la version de maintenance; ne fusionnez pas 1.0
dans master
ou ne fusionnez master
pas dans 1.0
. Prenez une hotfix
branche 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 diff
est 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.3
Marquez la tête en tant que 1.3.17, fusionnez-la dans chaque fonction en cours reliée 1.3
et passez à autre chose.
L' git flow
extension 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.
git
balise après chaque construction réussie? Cela présenterait l'avantage supplémentaire d'indiquer clairement lesgit
commits présentant des problèmes de construction ou d'échecs de test, car ils resteraient non étiquetés.