Git субмодуль или суб-репозиторий или удаленный? - PullRequest
25 голосов
/ 25 марта 2011

Я использую GIT для управления проектом системы управления контентом (CMS). CMS может иметь несколько плагинов (модулей).

В общем, я хочу иметь 3 типа репозиториев:

  • Разработка ядра CMS (каждый новый проект - это проверка последней стабильной и ненастроенной версии)
  • 1 репозиторий на модуль / плагин. (каждый новый проект будет извлекать последнюю стабильную версию модуля, который они хотят реализовать)
  • 1 репозиторий на проект (каждый клиент будет репозиторием, представляющим персонализацию из базовой CMS и модулей)

Для типов 1 и 2, я думаю, это простой базовый репозиторий. Но когда дело доходит до клиентского проекта, я запутываюсь:

  • Сначала я клонирую CMS, затем захожу в папку / modules / и снова клонирую все необходимые модули? Это сделает хранилище внутри хранилища! Будет ли первый репозиторий пытаться зарегистрировать папку .git / каждого модуля?
  • Я не могу использовать субмодуль, так как каждый клиент нуждается в персонализации своих модулей.
  • Если я изменю основной компонент модуля (не персонализацию, просто исправление ошибки), могу ли я отправить этот единственный файл в исходное хранилище модуля?
  • (речь не идет о модульном тесте, который будет распространяться вокруг)

Так что вопрос такой: Как мне организовать репозиторий (ы) / файлы / папки, чтобы быть эффективными?

Ответы [ 2 ]

13 голосов
/ 25 марта 2011

Описанный вами макет будет очень хорошо работать с подмодулями git.Я бы настоятельно рекомендовал прочитать документы и попробовать несколько учебных пособий .Основное отличие вашего плана заключается в том, что в каждом клиентском репозитории и репозитории клиентских плагинов будет два пульта вместо одного.И, когда вы хотите начать новый клиентский проект, вам нужно будет

  1. разветвлять основную линию cms
  2. разветвлять все плагины, которые будут изменены
  3. клонироватьразветвленный cms из (1), обновите его подмодули, чтобы он указывал на новые пульты из (2)
  4. инициализируйте / обновите подмодули
  5. (необязательно) добавьте основной URL-адрес cms в качествераздвоенные cms вашего клиента
  6. (необязательно) добавьте URL-адреса основного плагина в качестве удаленных в разветвленных плагинах вашего клиента

Лучшим вариантом может быть использование того же репозитория и просто создание ветки дляклиент.Вот как бы я это сделал.

8 голосов
/ 25 января 2016

Краткое обновление / дополнительная информация о предыдущем ответе: если вам не нравится git submodules подход или вы думаете, что это слишком сложно понять, вы можете попробовать

Не забудьте проверить, можете ли вы использовать другой менеджер зависимостей (например, RubyGems для Ruby, Composer для PHP ...) вместо подмодулей, его будет проще использовать и поддерживать.

...