В разработке используются несколько веток, каждая из которых выполняет свою функцию:
- Ветка "master" (или "продdev") представляет собой ветку стабильной разработки, где находятся целостные фичи.
- Ветка "feature_xx" - это самостоятельная фича, добавляющая осмысленный функционал и состоящая из множества задач. Фичи разрабатываются независимо и возвращаются в ветку "dev". Их также можно протестировать на уровне ветки.
- Когда достигается определенный этап разработки в ветке "dev", создается ветка "release" (релиз-кандидат). После выпуска она объединяется с веткой "master" и "dev".
- Таким образом, в ветке "dev" находится стабильное решение, а ветки "feature" содержат конкретные фичи, которые вливаются в "dev" в функциональном и стабильном состоянии.
- Релизный цикл становится асинхронным по отношению к циклу разработки. В ветке "dev" каждый разработчик может добавить фичу, которая может быть включена в релиз по желанию релиз-менеджера.
- Если накопилось достаточное количество фич или уже протестирована конкретная фича, ее можно добавить в релиз.
Это подход, используемый в Git, GitLab, Atlassian и других системах контроля версий.