Какие рекомендации по использованию Git есть у людей для сценария, в котором мы имеем:
- 1 единичная «базовая система».
- Из базовой системы мы создаем ответвления для наших клиентов с индивидуальной настройкой для них.
- Если в основной системе обнаружена ошибка, она будет применена к версии, настроенной для клиента.
- Некоторые исправления ошибок будет сложно применить, так как пользовательский код может быть сильно настроен.
- Некоторые исправления могут быть актуальны только для системы клиента.
- Клиентская система может также выполнить дополнительную работу позже, если они хотят иметь дополнительные функции.
Я экспериментировал с использованием этой техники http://dev.innovationfactory.eu/2010/06/09/development-and-release-strategy-with-git/ для небольшого проекта с одним человеком, но я боюсь, что у нас могут возникнуть проблемы с несколькими версиями клиента.
Ниже я обрисовал возможную стратегию, но думаю, у нас возникнут проблемы. Поскольку мы можем пометить что-то как релиз, наши версии клиента будут слишком сильно расходиться, и будет сложно узнать, какое исправление и где применять.
- / release / [название релиза]
- / Stories / [инициалы разработчика] / [имя новой функции]
- / клиенты / [имя клиента] / мастер
- / клиенты / [имя клиента] / истории / [инициалы разработчика] / [имя новой функции]
Конечно, ответ заключается в рефакторинге кода, чтобы клиентские версии не меняли код - но у меня сейчас нет такой роскоши: -)
РЕДАКТИРОВАТЬ: Эндрю указал на хороший аналогичный вопрос, который я, должно быть, пропустил раньше. В нем не так много деталей, как в моем собственном вопросе, в нем достаточно подробностей и хороших ответов. Поэтому я проголосую, чтобы закрыть этот вопрос в пользу этого: Как я могу отследить несколько проектов в Git, которые используют общий код?