Несколько веток разработчиков, избегая необоснованных слияний

Я ищу правильную стратегию ветвления и слияния для ситуации, в которой я сейчас нахожусь. Несколько недель назад я создал новую ветку 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 ветвь для представления каждой стабильной версии, или вы можете создать ветки выпуска для их представления.

Другие вопросы по тегам