Переход от разработки к производству в Mercurial
Я использовал Mercurial уже некоторое время, но на самом деле не привык к работе с ветками, поэтому я пытаюсь выяснить, имеет ли смысл этот рабочий процесс, прежде чем применять его в реальном проекте.
Вопрос:
Действительно ли имеет смысл воскресить development
ветвь каждый раз, когда мы собираемся работать над новым выпуском путем слияния production
в него, или мы должны вместо этого сделать уникальные именованные кратковременные ветви разработки, такие как development-1.1
?
Описание рабочего процесса:
Каждая готовая к выпуску версия нашего кода будет помечена (1.0
,1.1
и так далее) и помещены в production
ветка. Как только мы положили 1.0
в производство, мы сразу же начинаем работать над следующим выпуском - 1.1
, открыв ветку с именем development
, который затем разветвляется каждым разработчиком для каждой назначенной функции, чтобы держать вещи в порядке. Очень просто это далеко.
development
ветвь, теперь содержащая объединенный feature
ветвь, затем проверяется и объединяется в production
как изменения были сочтены готовыми к производству.
Когда, когда нам нужно продолжить работу над предстоящим выпуском, 1.2
в этом примере мы объединяем production
-ввет в development
один и начать работать.
Иллюстрированная история ревизий:
@ changeset: 8:21e89b501d4e
|\ branch: development
| | tag: tip
| | description: Development stage for v1.2 opened by merging production into development.
| |
| o changeset: 7:920ca77aa956
|/| branch: production
| | tag: 1.1
| | description: Version 1.1 stable (merged from development).
| |
o | changeset: 6:691b7aa99e42
|\ \ branch: development
| | | description: Feature merged in to development
| | |
| o | changeset: 5:5156cb9cf556
| | | branch: feature
| | | description: Feature finished
| | |
| o | changeset: 4:0345dc73e144
|/ / branch: feature
| | description: Work started on a feature
| |
o | changeset: 3:9d49be5d8a03
|/ branch: development
| description: Development branch opened
|
o changeset: 2:ba818420fa88
| branch: production
| tag: 1.0
| description: Version 1.0 stable. Woop woop!
2 ответа
С Mercurial именованные ветки вечны, и поэтому общий совет - использовать их только для имен, которые всегда применяются. Такие вещи, как "stable" и "development", а не "bug-194534" и "release-1.1". Это хорошо объяснено в вики.
Для вещей с конечной продолжительностью жизни вам лучше использовать что-то вроде закладок, которые намного ближе к тому, что git называет ветвями, чем Mercurial с именованными ветвями. Другими отличными вариантами для недолговечных понятий являются анонимные ветви или клоны, которые не являются постоянными.
Общий совет - использовать default как ветку разработки, но вкратце да, продолжайте использовать ту же ветку для разработки.
Описываемый вами рабочий процесс кажется разумным в том смысле, что он похож на рабочий процесс git-flow.
http://nvie.com/posts/a-successful-git-branching-model/.
Он популярен (я полагаю), поэтому разумно ожидать, что любой разработчик поймет это. Это должно чего-то стоить. Я не знаю, какую дополнительную ценность можно получить, изменяя ее с помощью ветки dev-1.1 с коротким сроком службы и т. Д. Кажется, что издержки на управление ими, вероятно, перевесят стоимость.