Gerenciando filiais de liberação no Mercurial

Recentemente mudei do SVN para o Mercurial. Agora eu me pergunto como realizar o fluxo de trabalho de ramificação pretendido no Mercurial de acordo com a boa prática, esperando que outros desenvolvedores entendam o que acontece no repositório.

Este é o fluxo de trabalho:

Normalmente eu tenho um tronco / ramificação padrão onde o trabalho na série de lançamentos atual acontece. Digamos que seja 1.x. Ao mesmo tempo, uso um branch 2.x para trabalhar no próximo grande lançamento. Mudanças nesta ramificação podem ser radicais, então a fusão com a ramificação trunk / default / 1.x não faz sentido aqui.Depois de um tempo, o trabalho em 2.x pode ser concluído e a versão 2.0 é liberada. Agora quero que a ramificação 2.x seja a nova ramificação padrão / tronco e que o padrão atual / trunk seja a ramificação 1.x.Repetindo esse processo, pode surgir uma nova ramificação 3.x. Como antes, se 3.0 é lançado, 3.x deve se tornar o novo branch padrão, enquanto o padrão atual deve se tornar o branch 2.x (novamente).

Minha pergunta énão se esse fluxo de trabalho é bom (acho que não é fundamentalmente errado). Minhas perguntas é se o modo como percebo isso no Mercurial pode ser visto como uma boa prática ou se há melhores oportunidades.

Então, aqui está como eu planejo gerenciar filiais no Mercurial ...

A partir de um repositório com uma única ramificação que contém o código da série de releases atual 1.x:

$ hg init
$ echo "hello world" > file1.txt
$ hg ci -A -m "Initial commit of 1.x code"

Comece a trabalhar na versão 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"

Enquanto isso, faça algum trabalho na série de lançamentos atual (1.x):

$ hg up default
$ echo "Minor adjustments specific for 1.x" > file3.txt
$ hg ci -A -m "Minor adjustments"

Depois de algum tempo, o lançamento 2.0 está pronto, yippee! Façopadrão ramo para1.x e2.x parapadrão:

$ 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"

Agora crie um novo ramo3.x e trabalhe nele, também trabalhepadrão. Novamente, depois de algum tempo, o 3.0 está pronto e é hora de gerenciar os nomes das ramificações:

$ 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"

O repo agora pode se parecer com isso ('o' são as cabeças):

o Branch default (3.x)
|
| o Branch 2.x
 \|
  | o Branch 1.x
   \|
    |
    .

O ponto principal que eu não tenho certeza é sereutilizando nomes de ramos e malabarismo com o nome da filialpadrão é uma boa prática.

Muito texto para essa pergunta - desculpe - mas eu queria ser claro sobre o que estou fazendo.

questionAnswers(2)

yourAnswerToTheQuestion