Поддержание проекта с помощью Git

У меня есть 2 проекта, и на самом деле эти 2 проекта примерно на 80% одинаковы, в основном разница - это только язык и бизнес-модель, одна для большей аудитории, использующая английский язык и имеющая бизнес-модель 9 долларов в месяц, другой использует локальный язык с бизнес-моделью freemium.

Когда-нибудь, когда я хочу добавить новую функцию/функциональность, я хочу добавить ее в оба проекта, но иногда я хочу добавить функцию, особенно для локального проекта.

Мой вопрос: как мне поддерживать эти 2 проекта с помощью git?

  • Поддержание 2 git репозитория для каждого проекта или
  • Поддерживать единый репозиторий git с 2 главным образом ветвью или
  • Любое другое предложение?

Ответ 1

создайте три проекта git:

  • один "основной" проект: он содержит код, разделяемый между двумя другими проекты

  • ваш английский проект: он имеет подмодуль для ядра плюс специфический код

  • ваш переведенный проект: он также имеет подмодуль для ядра плюс конкретный код

таким образом вы можете изменить свой основной проект, обновить ссылки на подмодули, и вы были бы хороши

Ответ 2

Возможно ли, чтобы вы справились с этим через конфигурацию и локализацию? То есть:

  • Одна база кода
  • Два файла локализации, содержащие строки на английском и локальном языках
  • Конфигурация для каждой версии веб-сайта, определяющая модель оплаты/включенные функции и изменяя поведение соответственно.

Мое личное мнение состоит в том, что один проект = один репозиторий. Если ваши веб-сайты явно отличаются друг от друга, я по-прежнему думаю, что ваша проблема может быть решена лучше путем реорганизации общего кода в модули, которые можно настроить и модифицировать разумным, контролируемым образом. Если вы позволяете каждому проекту иметь собственный репозиторий git, то без тяжелой работы они могут легко расходиться и содержать различия, которые нелегко отслеживать, вводя тонкие ошибки или непроверенные функциональные возможности.