Несколько веток разработчиков, избегая необоснованных слияний
Я ищу правильную стратегию ветвления и слияния для ситуации, в которой я сейчас нахожусь. Несколько недель назад я создал новую ветку Dev от Main для версии 1.6 приложения. Эта версия сейчас тестируется и будет запущена в ближайшие недели.
Начиная с сегодняшнего дня, мне нужно начать разработку для версии 1.7, но я не уверен, как действовать в TFS. Я думаю, что есть 2 сценария:
1. Ветвь dev для 1.7 создается из Main (как обычно), и я интегрирую все изменения 1.6 в ветку 1.7 и начинаю свою разработку. Любые изменения в 1.6 будут объединены с веткой 1.7, как только они будут готовы к тестированию.
2. Ветвь dev для 1.7 создается ветвлением ветки 1.6, любые будущие изменения в 1.6 будут снова объединены в соответствии с пунктом 1.
Проблема с # 1 заключается в том, что нет прямой связи между 1.6 и 1.7 согласно TFS, что приводит к необоснованным слияниям.
Проблема с #2 заключается в том, что нет прямой связи между 1.7 и Main, что приводит к необоснованному слиянию позже, когда 1.7 завершено и объединено с Main.
Это ситуация, когда нельзя избежать необоснованных слияний, или вся моя стратегия неверна?
1 ответ
Я предполагаю, что Main
представляет ваш последний стабильный выпуск и может быть открыт для получения исправлений и тому подобного для решения критических проблем. Я также предполагаю, что типичным рабочим процессом является то, что вы начинаете разработку версии "vNext" - в данном случае 1.6, а затем работаете над этой веткой, пока не закончите работу над ней, а затем объедините ее в Main
, Проблема в том, что вы используете постоянно меняющиеся ветки разработки для вашего следующего выпуска. Вы не хотите переходить с 1.6 на 1.7, потому что тогда вам придется в конечном итоге слиться с 1.7 до 1.6, и тогда эта ветвь 1.6 больше не будет точно отражать версию 1.6.
Я бы немного упростил вещи. Создайте две "постоянные" ветки:
Main
- ваша текущая стабильная "производственная" версияDev
- ваша версия в разработке (в данном случае 1.6)
Разработчики могут работать против Dev
обычно. Когда он "готов" и становится текущей стабильной версией, он объединяется с Main
,
Теперь у вас есть возможность создавать ветви функций (для более длительных, изолированных функций, которые не обязательно появятся в следующем выпуске) или ветки "vNext" (для материалов, запланированных для следующего выпуска, который, как вы обнаружили, у вас есть емкость начать работать раньше, чем предполагалось).
Теперь вы можете создать ветку от Dev
для вашей 1,7 работы, и обратно интегрировать ваши 1,6 изменения в 1,7. Когда 1,7 станет новой целью развития, объедините 1,7 в Dev
и удалите ветку 1.7.
Если вы хотите сохранить старые версии, вы можете использовать ярлыки на Main
ветвь для представления каждой стабильной версии, или вы можете создать ветки выпуска для их представления.