Zarządzanie gałęziami uwalniania w Mercurial

Ostatnio przełączałem się z SVN na Mercurial. Teraz zastanawiam się, jak zrealizować mój zamierzony przepływ pracy w Mercurial zgodnie z dobrą praktyką, mając nadzieję, że inni programiści zrozumieją, co dzieje się w repozytorium.

To jest przepływ pracy:

Zazwyczaj mam gałąź trunk / default, w której odbywa się praca nad serią bieżącej wersji. Powiedzmy, że to 1.x. Jednocześnie używam gałęzi 2.x do pracy nad następną wersją główną. Zmiany w tej gałęzi mogą być radykalne, więc połączenie z gałęzią trunk / default / 1.x nie ma tutaj sensu.Po chwili praca nad 2.x może zostać zakończona, a wersja 2.0 zostanie wydana. Teraz chcę, aby gałąź 2.x była nową gałęzią domyślną / magistralą, a bieżąca domyślna / trunk była gałęzią 1.x.Powtarzając ten proces, może pojawić się nowy oddział 3.x. Tak jak poprzednio, jeśli 3.0 zostanie wydane, 3.x powinno stać się nową domyślną gałęzią, podczas gdy bieżąca domyślna powinna stać się gałęzią 2.x (ponownie).

Moje pytanie brzminie czy ten przepływ pracy jest dobry (sądzę, że nie jest to zasadniczo błędne). Moje pytania dotyczą tego, czy sposób, w jaki zdaję sobie z tego sprawę w Mercurial, można postrzegać jako dobrą praktykę lub jeśli istnieją lepsze możliwości.

Oto jak planuję zarządzać oddziałami w Mercurial ...

Począwszy od repozytorium z pojedynczym oddziałem, który przechowuje kod bieżącej wersji serii 1.x:

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

Zacznij pracować nad wersją 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"

W międzyczasie popracuj w serii wydawniczej (1.x):

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

Po pewnym czasie wersja 2.0 jest już gotowa, yippee! Robićdomyślna oddział do1.x i2.x dodomyślna:

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

Teraz utwórz nowy oddział3.x i pracuj nad tym, także pracujdomyślna. Ponownie, po pewnym czasie 3.0 jest już gotowe i czas ponownie zarządzać nazwami oddziałów:

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

Repo może teraz wyglądać następująco („o” to główki):

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

Głównym punktem, którego nie jestem pewien, to czyponowne użycie nazwy oddziałów i żonglerka z nazwą oddziałudomyślna to dobra praktyka.

Dużo tekstu na to pytanie - przepraszam - ale chciałem jasno określić, co robię.

questionAnswers(2)

yourAnswerToTheQuestion