2012-02-05 2 views
3

Я использовал mercurial в течение некоторого времени, но на самом деле не привык к работе с ветвями, поэтому я изо всех сил пытаюсь выяснить, имеет ли смысл этот рабочий процесс или нет, прежде чем применять его к настоящий проект.Переход между разработкой и производством в Mercurial

Вопрос:
ли это действительно имеет смысл, чтобы воскресить development ветки каждый раз, когда мы будем работать над новым выпуском путем слияния production в него, или мы должны вместо этого сделать уникальное именованное недолгое развитие ветви вроде development-1.1?

Описание процесса:
Каждый готовый к производству редакция нашего кода будет помечено (1.0, 1.1 и так далее) и помещают в production отрасли. Как только мы поместили 1.0 в производство, мы сразу же приступим к работе над следующим выпуском - , открыв ветвь с именем 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! 

ответ

6

С Mercurial названные отрасли навсегда, и поэтому общий совет заключается в том, чтобы использовать их только для имен, которые всегда применяются. Такие вещи, как «стабильная» и «разработка», не такие, как «bug-194534» и «release-1.1». Это объясняется красиво in the wiki.

Для вещей, которые имеют конечную продолжительность жизни, вам лучше использовать что-то вроде закладок, которые намного ближе к тому, что git вызывает ветви, чем те, которые называются филиалами Mercurial. Другими замечательными вариантами для недолговечных концепций являются анонимные ветви или клоны, оба из которых являются непостоянными.

Общий совет заключается в использовании default as your development branch, но вкратце, да, повторите использование той же ветви для разработки.

+3

«общий совет заключается в том, чтобы использовать их только для имен, которые всегда применяются» - не притворяйтесь, что даете это при общих советах, это ложь. Цитата из wiki: «... если вы пытаетесь использовать ветку в bugfix, вы в конечном итоге можете столкнуться с проблемами производительности. Mercurial разработан, чтобы хорошо работать с сотнями * филиалов. Он все еще работает с десятью тысячами * ветви ... » –

+2

@LazyBadger: Я согласен с вами, но это не ошибка Ry4an. Он просто следует за партийной линией - позиция Мэтта заключается в том, что названные ветви не должны использоваться для каждой ошибки, но есть компании, которые делают это просто отлично. Как [я писал до] (http://stackoverflow.com/a/8870937/110204), похоже, что это в основном проблема с графическим интерфейсом. –

+0

@LazyBadger «ложь» кажется немного сильным. Я сказал, что это «общий совет», который является правдой (см. Ссылку). Я никогда не утверждал, что это техническая необходимость. –

1

рабочий процесс вы описываете, кажется разумным, что он похож на рабочий процесс ГИТ-потока.

http://nvie.com/posts/a-successful-git-branching-model/.

Это популярный (я думаю), поэтому было бы разумно ожидать, что любой разработчик это поймет. Это что-то стоит. Я не знаю, какую дополнительную ценность можно было бы получить, изменив его с помощью короткой ветви dev-1.1 и т. Д., Похоже, накладные расходы на управление этими ресурсами, вероятно, перевесят стоимость.

Смежные вопросы