Подмодуль для независимых плагинов - PullRequest
2 голосов
/ 05 декабря 2011

Я ищу способ организовать репозиторий моего проекта.Проект является закрытым исходным кодом, но он содержит одну подпапку, которую я хочу сделать общедоступной.Эта папка содержит «плагины», которые вызываются из основного проекта.Все эти плагины требуют, чтобы основной проект был там, но, конечно, основной проект не нуждается в их работе.

Обычный подход состоит в том, чтобы использовать субмодуль для плагинов, но я не слишком счастливс тем, что это значит для основного проекта.Поскольку основная разработка полностью отделена от плагинов, я не хочу портить ее историю обновлениями из субмодуля плагинов, и я на самом деле не хочу, чтобы плагины были частью основной (основной) программы.

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

Существует ли какой-то стандартный подход к такой ситуации, когда подмодуль является «большим»или «внешний» репозиторий?Или у вас есть другая идея, чтобы решить эту проблему?

1 Ответ

2 голосов
/ 06 декабря 2011

Три варианта:

  1. Просто сделайте отдельный клон плагинов репо вручную. Добавьте каталог «plugins» в файл .gitignore репозитория выполнения и поместите в README заметку с подробным описанием расположения репозитория плагинов и способов его клонирования. Плагины репо могут быть обновлены в любое время с помощью простого cd plugins; git pull. Вы можете добавить ловушку пост-получения в основном репозитории git локально, чтобы обновить репозиторий плагинов, если вы хотите избежать дополнительных шагов, но это повлияет только на ваше локальное репо.

  2. Использовать субмодуль. Чтобы получить последние плагины в вашей среде выполнения, вам нужно выполнить коммиты, чтобы отслеживать заголовок субмодуля плагинов. Например. git add plugins; git commit -m "tracking latest plugins". Обновление / развертывание можно затем выполнить с помощью git pull; git submodule update --init --recursive

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

Если у вас есть какая-то автоматизированная система сборки, я бы рассмотрел подмодуль. В противном случае я бы просто пошел с 1, так как он будет иметь наименьшее количество обслуживания.

...