Несколько версий проекта GIT
У меня есть проект базового веб-сайта, который я использую в качестве отправной точки для нескольких клиентов. У каждого клиента могут быть конкретные изменения в проекте, которые я не хочу включать в базовый проект. Однако иногда имеет смысл включить определенную функцию клиента в базовый проект и распространить ее на всех остальных клиентов (например, исправление ошибок).
Прямо сейчас у меня есть проекты, настроенные с TFS, так что каждый клиент является филиалом базового проекта. Он работает путем объединения изменений базы в каждую ветку, но это очень медленный процесс. Я хотел бы переключиться на git (на github), чтобы я мог выполнять эти операции локально и сократить время, затрачиваемое на эти операции.
Прочитав тонны статей, я сделал следующие выводы:
- Git ветвление не будет работать хорошо в моем сценарии. Мне нужны разные папки для каждого проекта, чтобы я мог запускать сайты одновременно.
- "Подмодулирование" базового кода в каждое клиентское репо не кажется правильным решением, поскольку база - это не подпапка в проекте, это "проект".
- Cherrypicking changesets требует добавления базового пульта в проект заказчика и кажется сложным (и я пока не смог заставить его работать)
Поэтому, насколько я понимаю, я должен создать новое репо для каждого нового клиента, изначально скопировать код из базы и создать патчи для перемещения изменений между проектами (меня не волнует история). Я, вероятно, могу жить с этим подходом, особенно если я могу создать инструмент, который автоматизирует процесс.
Может кто-нибудь сказать мне, если я на правильном пути, и как я должен идти о добавлении новых сайтов в идеале (имея в виду, что рабочий процесс должен работать для нескольких разработчиков).
заранее спасибо
1 ответ
Я не вижу причин, по которым ветки не будут работать для этого. Вы должны иметь возможность иметь общие коммиты в базовой ветке и создавать ветки для каждого клиента; всякий раз, когда есть обновления в базовой ветке, они будут объединяться с различными ветвями клиентов. Так же, как вы в настоящее время делаете с TFS.
Если вы собираетесь обслуживать непосредственно из рабочего дерева git, вам потребуется отдельная копия репозитория для каждого обслуживаемого сайта, чтобы в каждом из них была выделена отдельная ветвь. Но вы все равно можете хранить все ветви в одном репозитории на Github.
Другой вариант заключается в том, чтобы использовать один репозиторий и рабочее дерево локально за пределами области, обрабатываемой веб-сервером, а затем использовать процесс развертывания для копирования данных, подлежащих обслуживанию, в соответствующее местоположение. Поскольку веб-сервер не будет смотреть прямо в рабочее дерево git, вам не обязательно проверять несколько веток одновременно.