Как проект X может быть выпущен (объединен с мастером) без изменений проекта Y?
Двигаясь вперед, должны ли решения A, B и C быть отдельными репозиториями в будущем (несмотря на то, что они связаны на бизнес-уровне)?
Сценарий
У нас есть один репозиторий, который содержит:
- Решение А
- Решение Б
- Решение C (общие компоненты)
Оба решения A и B подключаются к нашей общей Системе, которая соединяет их вместе через общие компоненты. Решение A и B основано на общих компонентах в решении C.
Проект X требует изменений в решениях A и C. Эти изменения вносятся в ветки функций, объединяются обратно в разработку и постоянно развертываются в нашей промежуточной среде.
Проект Y требует внесения изменений только в Решения Б. Снова в ветках функций, объединенных обратно в dev и постоянно развернутых в Staging.
История Git
На данный момент наша история Git выглядит так (от самого раннего до самого последнего):
--› ПроектX --› ПроектY
Бизнес-требование
Бизнес больше не хочет запускать проект X в производство, поскольку проект Y теперь является «приоритетом 1». Никакие изменения из проекта X не могут быть выпущены.
Стратегия ветвления
Мы следуем следующей стратегии:
Стратегия выпуска
Мы развертываем полные пакеты продуктов, а не дифференциальные.
При слиянии с Dev Team Foundation Server развертывается на Staging.
При слиянии с Master Team Foundation Server предоставляет отформатированный пакет развертывания для каждого определения сборки.