Git: Поддержка сторонних модулей, состоящих из нескольких каталогов - PullRequest
2 голосов
/ 05 августа 2011

Компания, в которой я работаю, использует стороннее веб-приложение (PHP / MySQL), которое может быть расширено модулями.Нам нужно отслеживать наши собственные изменения в основном приложении и дополнительных модулях, отслеживать, какие модули установлены и в то же время поддерживать возможность легко обновлятьприложение и его модули до последней версии поставщика .

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

Однако я не смог найти реальный способ управления таким проектом с помощью git, особенно потому, что оба подмодуля git иСлияние поддерева git, похоже, требует, чтобы подпроект содержался в каталоге one .Но это не так для большинства веб-приложений, которые я видел, так как именно с этим, которое имеет следующую структуру каталогов:

app/
  `-code/
      `-path/to/plugin/code
  `--i18n/
      `-path/to/plugin/i18n
  `--assets/
      `-path/to/plugin/assets

Так кто-нибудь знает, как эта проблема может быть решена без ущерба для удобства использования (как подмодули делают IMHO)

Обновление :

Пожалуйста, также учтите, что я нахожусь на Windows Vista, и символические ссылки , кажется, не работают с Git для Windows.

1 Ответ

2 голосов
/ 05 августа 2011

Если ваша среда поддерживает символические ссылки, я бы порекомендовал подход с субмодулями в сочетании с программными ссылками, чтобы получить правильную структуру каталогов.

Таким образом, вы получаете следующие преимущества:


Из комментариев:

в основном у вас есть две структуры каталогов:

  • одна, полученная непосредственно изGit Checkout, с его каталогами подмодулей.
  • Одна, созданная вручную, чтобы соответствовать ожидаемой структуре, с командами ln -s (или mklink для Windows Vista / Seven ), чтобы связать правильные каталоги из первойструктура к ожидаемому месту во второй структуре.

Объекты OP raphinesse :

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

На что я отвечаю:

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

OP raphinesse соглашается:

Да, я только что подумал о добавлении скрипта, который инициализирует иобновляет подмодули, а также настраивает соответствующие ссылки «post-checkout» в рабочем каталоге основного хранилища (если UAC-Prompt не создает проблем).Конечно, символические ссылки, настроенные таким образом, должны быть включены в файл .gitignore.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...