Рабочий процесс Hg с двумя различными циклами выпуска - PullRequest
1 голос
/ 19 декабря 2011

Мы собираемся изменить наш рабочий процесс для управления выпусками в рамках нашего обновления с CVCS (TFS) до DVCS (Hg). Некоторые вещи обсуждались довольно интенсивно здесь, в офисе, и я был бы рад получить некоторую информацию об этом.

Некоторый фон

Мы - небольшая компания среднего размера (около 25 разработчиков) с долгоживущим продуктом. Мы стараемся поддерживать низкий цикл выпуска - выпуск после каждого спринта (~ раз в месяц). В TFS мы создаем ветку для каждого нового выпуска. Два последних выпуска поддерживают исправления ошибок.

Наша текущая отраслевая модель (TFS)

--trunk
  --release200 //and older, not supported anymore
  --release201
  --release202

Поверх этих веток у нас есть разные ветки для разработчиков (при необходимости). Некоторые ветви команды и некоторые ветви функций.

«Небольшие» ошибки исправлены в выпуске 202 и объединены с транком. Критические ошибки исправляются в release201 и объединяются в выпуск 202 и транк.

Что мы не поддерживаем, так это исправление ошибок в старых версиях.

Новый рабочий процесс

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

(Hg)

--default
  --RC
  --Release
  --StableRelease200
  --StableRelease210

Это все именованные ветви внутри центрального хранилища Hg. Каждая из этих ветвей связана с машиной CI. С точки зрения разработчика, будут развиваться ветви (hg clones), выходящие за рамки этого вопроса.

Некоторые клиенты будут использовать релизы от Release, некоторые от StableReleaseX.

По умолчанию: Все новые разработки слиты в эту ветку.

RC: Когда выполняется PBI / конец спринта, по умолчанию объединяется в эту ветку для внутреннего тестирования. Ошибки, найденные в этой ветке, также исправлены здесь. Когда QA считает, что оно достаточно стабильно, эта ветвь объединяется с Release. Если некоторым разработчикам необходимо продолжить работу над новыми функциями, они могут сделать это по умолчанию.

Релиз: Релизы здесь происходят последовательно, только последний будет поддерживать исправления ошибок. С технической точки зрения релизы помечены тегами Hg. Критические ошибки, найденные на сайте клиента во время спринта, будут исправлены здесь и объединены с настройками по умолчанию.

StableReleases: Каждые полгода или около того (по решению руководства), релиз объединяется с новой веткой StableRelease. В течение срока службы здесь не будет добавлено никаких новых функций. Найденные здесь ошибки будут исправлены здесь и объединены обратно по умолчанию. Вероятно, одновременно будут поддерживаться две StableReleases - текущая и вторая последняя. Старые ветки будут закрыты.

Некоторые вопросы

  • Общие мнения о рабочем процессе? Есть ли у вас опыт поддержки двух разных "релизных треков"? Один с частыми выпусками и один с долгоживущими выпусками только с исправлениями ошибок?
  • Мы думали о том, чтобы иметь ветви как именованные ветви, чтобы облегчить их разработку (одна VS, одна ветка и т. Д.). Или ... ты думаешь, это будет сложнее? Вместо этого проще иметь отдельные клоны (большинство разработчиков имеют ограниченный опыт использования DVCS)?

1 Ответ

1 голос
/ 19 декабря 2011

Пожалуйста, смотрите вики-страницу на "стандартном" ветвлении в вики Mercurial.Вы будете рады узнать, что он описывает рабочий процесс, очень похожий на тот, который вы предлагаете!:-) Так что да, наличие двух таких треков релиза работает очень хорошо.

Что касается использования именованных ветвей вместо клонов, то мы очень довольны двумя ветвями имен, которые мы используем в самом проекте Mercurial.Раньше у нас было два репозитория, но теперь есть ветвь default и stable.

Причина, по которой некоторые предпочитают отдельные клоны на сервере, заключается в том, что он может дать лучший обзор: «ветви»затем отображаются как отдельные репозитории.

...