У нас есть базовая система, настроенная для каждого клиента. База живет в своем собственном хранилище, и каждый клиент живет в своем собственном хранилище (первоначально клонировано из базы).
Цель состоит в том, чтобы иметь возможность добавлять исправления / функции ошибок в базу, которые могут быть распространены среди клиентов по требованию.
Пока рабочий процесс был следующим:
- Создание коммитов / веток тем для базовых исправлений / функций: (на базе, мастер)
git commit -m "Fix admin typo"
- Объединить эти изменения с клиентом: (на клиенте, мастер)
git merge base/master
. Очевидно, это включает в себя исправление любых конфликтов между базой и настройками клиента.
- Нажмите слияние с источником клиента: (на клиенте, мастер)
git push origin master
- Наше соглашение состояло в том, чтобы тянуть с rebase (чтобы история читалась). Итак, тогда другой разработчик, работающий над клиентским проектом, будет (на клиенте, мастере)
git pull --rebase origin master
Именно в этот момент мы достигаем значительных проблем с этим извлечением / перебазированием. Разработчики получают конфликты при извлечении / перебазировании после слияния базы с клиентом. И это не просто несколько конфликтов, это много (для многих коммитов, которые воспроизводятся?), И часто код, который конкретный разработчик даже не коснулся. Я думаю, что это неразумно и неустойчиво.
Какое здесь лучшее решение?
Моя единственная мысль - перестать использовать rebase при извлечении и иметь дело с неаккуратными и трудно читаемыми журналами, но я бы предпочел этого не делать. Эти клиентские проекты могут продолжаться годами, и я хотел бы иметь возможность еще разглядеть слияния базовых систем в будущем.