Недавно я перешел с SVN на Mercurial. Теперь мне интересно, как реализовать намеченный рабочий процесс ветвления в Mercurial в соответствии с хорошей практикой, надеясь, что другие разработчики поймут, что происходит в репозитории.
Это рабочий процесс:
- Обычно у меня есть ветка ствола / по умолчанию, где происходит работа над текущей серией выпусков. Допустим, это 1.x. В то же время я использую ветку 2.x для работы над следующим основным выпуском. Изменения в этой ветке могут быть радикальными, поэтому слияние с веткой trunk / default / 1.x здесь не имеет смысла.
- Через некоторое время работа над 2.x может быть закончена, и будет выпущена версия 2.0. Теперь я хочу, чтобы ветка 2.x была новой веткой по умолчанию / trunk и текущая ветка default / trunk - веткой 1.x.
- Повторяя этот процесс, может появиться новая ветка 3.x. Как и прежде, если выйдет 3.0, 3.x должна стать новой веткой по умолчанию, тогда как текущее значение по умолчанию должно стать веткой 2.x (снова).
У меня вопрос , а не , хорош ли этот рабочий процесс (я полагаю, это не является принципиально неправильным). У меня вопрос: можно ли считать способ, которым я это понимаю в Mercurial, хорошей практикой или есть лучшие возможности?
Итак, вот как я планирую управлять филиалами в Mercurial ...
Начиная с репозитория с одной веткой, которая содержит код текущей серии выпусков 1.x:
$ hg init
$ echo "hello world" > file1.txt
$ hg ci -A -m "Initial commit of 1.x code"
Начните работать над выпуском 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"
А пока поработайте в серии текущих выпусков (1.x):
$ hg up default
$ echo "Minor adjustments specific for 1.x" > file3.txt
$ hg ci -A -m "Minor adjustments"
Через некоторое время релиз 2.0 готов, ура! Сделайте по умолчанию ветвь до 1.x и 2.x до по умолчанию :
$ 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"
Теперь создайте новую ветку 3.x и работайте в ней, также работайте по default . Опять же, через некоторое время 3.0 готов, и снова пришло время управлять именами веток:
$ 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 Branch default (3.x)
|
| o Branch 2.x
\|
| o Branch 1.x
\|
|
.
Главное, в чем я не уверен, так это то, что повторное использование имен ветвей и жонглирование с именем ветви по умолчанию - хорошая практика.
Много текста для этого вопроса - извините, - но я хотел уточнить, что я делаю.