Мы собираемся изменить наш рабочий процесс для управления выпусками в рамках нашего обновления с 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)?