У нас есть программный продукт, который развивается в ритме потребностей клиентов и более общей дорожной карты.
Поскольку мы находимся в среде проекта SCRUM, очень регулярно случается, что новая функция попадает в продукт, и тогда мы сталкиваемся с выбором:
Отказ от выпуска новой функции не является вариантом, клиенты не хотят ждать долгосрочного контрольного плана, чтобы получить функции, которые им нужны, и не всегда возможно переместить функцию в клиентский модуль - иногда нам нужно изменить ядро продукта ...
Есть ли у кого-нибудь отзывы о хорошей практике с учетом таких ограничений?





Новая ветка, такая как ('new_feature_branch'), предназначена для материализации усилия по развитию, которая несовместима с текущей веткой (например, 'release_branch')
Поэтому, если ваш текущий release_branch не очень активен, вы можете использовать его для новой функции (при условии, что вы определяете метку до, разрабатывающую эту новую функцию, на случай, если вам нужно отменить этот процесс и вернуться в состояние, предшествующее этой новой функции)
Создание новой ветки может быть хорошим решением при условии, что она регулярно (каждые 3 недели) объединяется с ветвью выпуска, а затем не учитывается. Это особенно рекомендуется, если у вас есть какие-то действия на release_branch (например, горячее исправление ошибок). тогда нужно разделить два усилия.
По сути, все сводится к вашему определению рабочий процесс слияния.
Оставляйте комментарии, если хотите, чтобы я подробно описал некоторые варианты, которые, по вашему мнению, я недостаточно подробно рассмотрел.
Я бы предложил следующее, которое мы используем в моей текущей среде: относитесь к незапланированной функции, как к исправлению безопасности.
Таким образом, каждая незапланированная функция получает ответвление, но достаточно длинное, чтобы создать новый выпуск и объединить его с основной веткой. Вы выполняете почти всю свою работу в одном месте - стволе - и вам не нужно выполнять много работы по слиянию.
В моем офисе мы обычно работаем в 3 филиалах в любой момент времени.
В редких случаях, когда нам нужно разрабатывать четвертую линию (из-за очень плотных графиков выпуска), мы иногда открываем нашу строку кода песочницы. Хотя чаще всего у нас будет только один разработчик, работающий изолированно и не регистрирующийся до тех пор, пока не будет очищена основная линия.
С помощью описанной выше стратегии ветвления мы смогли внести основные изменения в функции с доставкой в конце каждого спринта.
Не похоже, что вы действительно живете в среде Scrum. Scrum требует команда, которая должна быть ВЫПОЛНЕНА в конце каждого спринта, который должен длиться не более четырех недель (более вероятно, от одной до двух недель). Итак, каждые пару недель у вас в любом случае должна быть полностью протестированная, работающая и потенциально развертываемая система.
Единственный известный мне способ сделать это - иметь исчерпывающие, полностью автоматизированные наборы тестов как для заказчиков, так и для разработчиков (как предписывает Extreme Programming).
Я не уверен, зачем вам нужны ветки в этом случае, но я также не понимаю, почему они не поддерживаются. По моему опыту, чем короче ветка, тем лучше.