Рабочий процесс Git для нескольких команд

12

Мы собираемся начать использовать Git (пока не использую его), и я хочу определить рабочий процесс.

У нас есть 4 команды в 4 разных точках мира, которые разрабатывают один и тот же продукт. Каждая команда владеет частью кода продукта, но иногда им также приходится вносить изменения в код, принадлежащий другим командам.

Есть ли рекомендации для рабочего процесса Git для такой среды?

Я уже видел эту статью , но подход здесь «мы создаем дополнительные ветви как можно реже», и я верю больше в подход «ветвь для каждой пользовательской истории».

Также в этой статье представлен хороший подход.

Я имел в виду наличие основной ветки, постоянной ветки для каждой команды, периодически сливающейся с основной, и ветки для каждой пользовательской истории, сливающиеся с ветвями команд. Это имеет смысл, или это не сработает?

Игорь Окс
источник
2
Мы используем эту модель ветвления , но я думаю, что если вы прочитаете «ветвь функций» как «ветвь истории», она отлично сочетается с вашей второй статьей.
2
Я уверен, что 10 человек могли ответить на это с 10 различными ответами. Вот что работает для меня: у нас есть один репозиторий, размещенный на github, который обозначает «текущий» релиз. Старые версии разветвлены (хотя теги тоже работают). Участникам команды рекомендуется создавать ветки для задач, над которыми они работают. По завершении они отправляют запрос на извлечение мастеру (или там, где это необходимо для слияния), а затем кто-то еще просматривает этот запрос и отвечает за его слияние с мастером. Они также несут ответственность за очистку ветви после слияния.
2
Вам могут быть интересны субмодули, чтобы разделить кодовые базы разных команд. Затем они могут разветвлять кодовые базы друг друга и отправлять исправления при редактировании частей кода друг друга.
Фред Фу
@larsmans & carbonbasednerd - Ваши комментарии должны были быть ответами, они бы получили от меня голоса "за". * 8 ')
Марк Бут

Ответы:

8

Взгляните на успешную модель ветвления Git , в которой есть хорошая стратегия ветвления для разработки функций в разных выпусках.

Успешная модель git-ветвления

Вы могли бы реализовать нечто подобное с одним дополнительным уровнем для ветвей команды между ветвью «разработка» и «ветвями функций». Наличие групповых ветвей также позволило бы двум командам более эффективно сотрудничать путем объединения их ветвей.

Ник Хаддад
источник
0

Я бы сказал, что у каждой команды есть своя собственная версия репозитория, с одним глобальным репозиторием, к которому все присоединяются (как в ядре Linux, где репозиторий Linus является ядром и центральным репозиторием).

Затем для поддержки кода продукта вы можете использовать субмодули, как сказал @larsmans, тогда каждая команда может работать только в той части, которая для них наиболее важна, и если им нужно работать с другой частью, они могут это сделать, но они придется помнить об обновлении подмодуля, и именно в этом заключается проблема (поскольку при использовании git очень легко ошибиться, к счастью, от них также легко избавиться).

Но поскольку ваши команды привыкли к этому и знают, что они изменяют код другой команды, им легче не забыть выполнить обновление субмодуля, прежде чем менять сторонний модуль.

Coyote21
источник