Разрешает ли git голые подмодули?

Это может быть ужасно, я не уверен.

Допустим, у нас есть репозиторий «продукт» с рабочим каталогом.

/product
/product/command.script
/product/config/ (bare git repo)

И репозиторий "config" с рабочим каталогом

/config
/config/config.json

В файле command.script есть действия для взаимодействия с голым репо. бывший. Запуск command.script BRANCH1 запустит команду

git show BRANCH1:config.json

Есть ли способ, которым папка «/product/config/» может быть подмодулем репозитория «product», так что при клонировании репозитория «product» репозиторий «config» также будет клонирован

git clone --bare [config origin here] config

из своего источника, и когда извлекается репозиторий "продукт", можно получить подмодуль "/product/config"

git fetch origin '*:*'

Или это то, что должно обрабатываться через какие-то крючки?


person Tyler Clendenin    schedule 27.08.2014    source источник
comment
Разрешить голые подмодули: я так не думаю.   -  person linquize    schedule 28.08.2014


Ответы (1)


Нет: при извлечении «продукта» репо его индекс будет включать gitlink (специальная запись, записывающая SHA1 подмодуля).

Эту запись можно использовать только в не голом репо, чтобы использовать ее как вложенное (субмодульное) репо.

Вот почему git clone справочная страница упоминает:

--recursive
--recurse-submodules

После создания клона инициализируйте все подмодули внутри, используя их настройки по умолчанию. Это эквивалентно запуску git submodule update --init --recursive сразу после завершения клонирования.
Этот параметр игнорируется, если в клонированном репозитории нет рабочего дерева/проверки (т. е. если какой-либо из --no-checkout/-n, --bare или --mirror данный)


Это означает, что репозиторий config лучше всего клонировать отдельно (даже голым) в правильном SHA1 (тот, который записан gitlink в первом репозитории product), а git show BRANCH1:config.json выполнять в этом другом клонированном репозитории (с git -C).

person VonC    schedule 28.08.2014
comment
Спасибо, я тоже не знал, что они добавили переключатель -C. Это будет полезно. Таким образом, крючки не будут хорошим способом пойти? - person Tyler Clendenin; 28.08.2014
comment
@TylerClendenin да, клон --bare позволяет отправлять репо (вы можете нажать на голое репо). Затем вы можете добавить хук после получения для выполнения любого процесса, который вы хотите, как я объяснил вчера в stackoverflow.com/a/25499592/6309. . - person VonC; 28.08.2014