У меня есть проект базового сайта, который я использую в качестве отправной точки для нескольких клиентов. Каждый клиент может иметь конкретные изменения в проекте, которые я не хочу включать в базовый проект. Однако иногда конкретная функция клиента имеет смысл включить в базовый проект и нажать на всех других клиентов (например, исправления ошибок).Несколько версий проекта git
Прямо сейчас у меня есть настройка проектов с TFS, так что каждый клиент является ветвью базового проекта. Он работает путем слияния изменений базы с каждой ветвью, но это очень медленный процесс. Я хотел бы переключиться на git (на github), чтобы я мог выполнять эти операции локально и сокращать время, затрачиваемое на эти операции.
После прочтения тонны статей, это мои выводы до сих пор:
- Git ветвление не будет хорошо работать в моем сценарии. Мне нужны разные папки для каждого проекта, поэтому я могу запускать сайты одновременно.
- «Submoduling» базовый код в каждом репо клиента не кажется правильным решением, поскольку база не является подпапкой в проекте, это «проект».
- Cherrypicking требует Изменения базового пульта дистанционного управления, чтобы быть добавлены к проекту клиента и кажется сложным (и я haven't был в состоянии сделать его работу до сих пор)
Так, насколько я понимаю, я должен создать новый репо для каждого нового клиента, сначала скопируйте код из базы и создайте исправления для перемещения изменений между проектами (меня не интересует история). Возможно, я смогу жить с этим подходом, особенно если я могу создать инструмент, который автоматизирует процесс.
Не могли бы вы рассказать мне, правильно ли я нахожусь на правильном пути, и как мне лучше добавлять новые сайты (имея в виду, что рабочий процесс должен работать для нескольких разработчиков).
Заранее спасибо
Средняя часть вашего ответа выглядит интересной. Однако, если у меня есть только один репозиторий, тогда все ветки будут существовать в этом хранилище, что может быть довольно сложно поддерживать. Представьте, что каждый клиент имеет собственный жизненный цикл с ветвями развертывания/исправления/развития. Я предполагаю, что я действительно хотел бы (концептуально) развить основной проект для каждого клиента, но, по-видимому, это невозможно. – jbc
Хмм, я нашел это обходное решение http://bitdrift.com/post/4534738938/fork-your-own-project-on-github для разметки собственных проектов. Думаю, я попробую.Единственное, что у меня есть, это то, что я смогу вытащить только определенные изменения, и если я смогу подтолкнуть изменения от проекта клиента к базе. – jbc