Récemment, je suis passé de SVN à Mercurial. Je me demande maintenant comment réaliser mon flux de travail de branchement dans Mercurial selon les bonnes pratiques, en espérant que les autres développeurs comprennent ce qui se passe dans le dépôt.
Voici le déroulement des opérations :
- Habituellement, j'ai un tronc/une branche par défaut où le travail sur la série de versions actuelles a lieu. Disons que c'est la 1.x. En même temps, j'utilise une branche 2.x pour travailler sur la prochaine version majeure. Les changements dans cette branche peuvent être radicaux, donc la fusion avec la branche trunk/default/1.x n'a pas de sens ici.
- Après un certain temps, le travail sur la 2.x peut être terminé et la version 2.0 est publiée. Je veux maintenant que la branche 2.x soit la nouvelle branche par défaut/tronc et que la branche par défaut/tronc actuelle soit la branche 1.x.
- En répétant ce processus, il peut y avoir une nouvelle branche 3.x. Comme précédemment, si la version 3.0 est publiée, la 3.x devrait devenir la nouvelle branche par défaut, tandis que la branche 2.x devrait (à nouveau) devenir la branche par défaut actuelle.
Ma question est la suivante no si ce flux de travail est bon (je suppose qu'il n'est pas fondamentalement mauvais). Ma question est de savoir si la façon dont je réalise cela dans Mercurial peut être considérée comme une bonne pratique ou s'il existe de meilleures possibilités.
Voici donc comment je compte gérer les branches dans Mercurial ...
Commencer à partir d'un dépôt avec une seule branche qui contient le code de la série de versions actuelles 1.x :
$ hg init
$ echo "hello world" > file1.txt
$ hg ci -A -m "Initial commit of 1.x code"
Commencer à travailler sur la version 2.x :
$ hg branch 2.x
$ hg ci -m "Create new branch for 2.x development"
$ echo "Big new feature for 2.x" > file2.txt
$ hg ci -A -m "Add big new feature"
Pendant ce temps, faites un peu de travail dans la série de versions actuelles (1.x) :
$ hg up default
$ echo "Minor adjustments specific for 1.x" > file3.txt
$ hg ci -A -m "Minor adjustments"
Après un certain temps, la version 2.0 est prête, youpi ! Faire par défaut à la branche 1.x y 2.x a par défaut :
$ hg up default
$ hg branch 1.x
$ hg ci -m "Make default branch to 1.x branch"
$ hg up 2.x
$ hg ci --close-branch -m "Close branch 2.x"
$ hg branch --force default
$ hg ci -m "Make former 2.x branch to new default"
Maintenant, créez une nouvelle branche 3.x et y travailler, travailler aussi sur par défaut . Après un certain temps, la version 3.0 est prête et il est à nouveau temps de gérer les noms des branches :
$ hg up default
$ hg branch --force 2.x # (reuse previously closed 2.x branch name)
$ hg ci -m "Make default branch to 2.x branch"
$ hg up 3.x
$ hg ci --close-branch -m "Close branch 3.x"
$ hg branch --force default
$ hg ci -m "Make former 3.x branch to new default"
Le repo peut maintenant ressembler à ceci ('o' sont les têtes) :
o Branch default (3.x)
|
| o Branch 2.x
\|
| o Branch 1.x
\|
|
.
Le point principal dont je ne suis pas sûr est si réutilisation de noms de branches et jongler avec le nom de la branche par défaut est une bonne pratique.
Beaucoup de texte pour cette question - désolé - mais je voulais être clair sur ce que je fais.