Мы собираемся начать использовать Git (пока не использую его), и я хочу определить рабочий процесс.
У нас есть 4 команды в 4 разных точках мира, которые разрабатывают один и тот же продукт. Каждая команда владеет частью кода продукта, но иногда им также приходится вносить изменения в код, принадлежащий другим командам.
Есть ли рекомендации для рабочего процесса Git для такой среды?
Я уже видел эту статью , но подход здесь «мы создаем дополнительные ветви как можно реже», и я верю больше в подход «ветвь для каждой пользовательской истории».
Также в этой статье представлен хороший подход.
Я имел в виду наличие основной ветки, постоянной ветки для каждой команды, периодически сливающейся с основной, и ветки для каждой пользовательской истории, сливающиеся с ветвями команд. Это имеет смысл, или это не сработает?
источник
Ответы:
Взгляните на успешную модель ветвления Git , в которой есть хорошая стратегия ветвления для разработки функций в разных выпусках.
Вы могли бы реализовать нечто подобное с одним дополнительным уровнем для ветвей команды между ветвью «разработка» и «ветвями функций». Наличие групповых ветвей также позволило бы двум командам более эффективно сотрудничать путем объединения их ветвей.
источник
Я бы сказал, что у каждой команды есть своя собственная версия репозитория, с одним глобальным репозиторием, к которому все присоединяются (как в ядре Linux, где репозиторий Linus является ядром и центральным репозиторием).
Затем для поддержки кода продукта вы можете использовать субмодули, как сказал @larsmans, тогда каждая команда может работать только в той части, которая для них наиболее важна, и если им нужно работать с другой частью, они могут это сделать, но они придется помнить об обновлении подмодуля, и именно в этом заключается проблема (поскольку при использовании git очень легко ошибиться, к счастью, от них также легко избавиться).
Но поскольку ваши команды привыкли к этому и знают, что они изменяют код другой команды, им легче не забыть выполнить обновление субмодуля, прежде чем менять сторонний модуль.
источник