Git рабочий процесс для подпроектов?
У нас есть нестандартный проект "Кикстарт"
Этот кикстарт может иметь модули, добавленные в него довольно легко.
Когда мы собираем эти модули, мы строим их все на основе одной чистой мастер-копии кикстарта, которая контролируется версией.
Когда мы запускаем проект, мы создаем пустое репо, настраиваем репо кикстарта как удаленное, Pull from remote. Когда происходит обновление ядра, мы снова просто подключаемся с пульта.
Это хорошо работает.
Но у нас есть модули, которые я упомянул, мы строим их на чистом старте как новый проект.
Мы хотим, чтобы контроль версий всех этих модулей.
Файлы для модулей фактически находятся внутри шаблона.
Наш рабочий процесс выглядит примерно так
/site 1
/kickstart
/module1
/module1 files
/module2
/module2 files
/site 1 specific file
/site 1 specific file
/site2
/kickstart
/modification of kickstart file for site2 only (e.g. config.php)
/module2
/module2 files
/module3
/module3 files
/site 2 specific file
/site 2 specific file
/site3
/kickstart
/modification of kickstart file for site3 only (e.g. config.php)
/module1
/module1 files
/module3
/module3 files
/site 3 specific file
/site 3 specific file
Итак, сайты 1,2 и 3 являются собственными Git-репозиториями.
Все они содержат кикстарт, который является git-репозиторием.
Некоторые из них делятся модулями.
Теперь мы не будем продвигать их вверх по течению, если мы решим, что что-то работает хорошо, делая это на сайте 1, мы извлечем чистую копию кикстарта и внесем изменения, а затем они будут перенесены на все разные сайты. То же самое с модулями.
Но мой основной вопрос: куда мы помещаем модули? Они зависят от кикстарта.
Одна идея состояла в том, чтобы сделать их ветвями кикстарта, я также слышал о подмодулях и поддеревьях, но не знаю, как они работают.
Каким будет лучший способ структурирования этого рабочего процесса?
1 ответ
Помещение этих трех сайтов в их собственное Git-репо (в отличие от использования одного репо с тремя ветвями) означает, что вам не нужно делать много (если есть) слияний между сайтами 1, 2 и 3: все 3 имеют только один пульт: kickstart
Сделки РЕПО.
Что касается управления модулями, каждый модуль должен находиться в своем репо, чтобы легко использовать подмодули или поддерево:
- Подмодули - это способ получить каждый модуль в отдельности, с его полной историей, в своем собственном каталоге, что позволяет даже вернуться к репозиториям каждого модуля.
- поддерево поставляется в двух вариантах: стратегия слияния поддерева 2007 (объясняется здесь) и недавняя (1.7.11+)
subtree
командование
Стратегия слияния поддеревьев (см. Также здесь) будет более приспособлена для слияния одного из репозиториев модулей в подкаталог (modulex
). Поскольку вам не нужно отталкиваться, это может быть вашим решением.