Вернитесь к pre-git v1.7.8 поведению подмодуля git с расположением файловой системы подмодуля - PullRequest
7 голосов
/ 27 февраля 2012

Недавно в git 1.7.8 было введено изменение для «обработки» подмодулей иначе, чем раньше - https://lkml.org/lkml/2011/12/2/316

При заполнении нового каталога подмодуля «git submodule init», $Каталог метаинформации GIT_DIR для подмодулей создается в каталоге $ GIT_DIR / modules // суперпроекта и на него ссылается механизм gitfile.Это позволяет переключаться между коммитами в суперпроекте, который имеет и не имеет подмодуль в дереве, без повторного клонирования.

Так что теперь вместо клонирования подмодуля в указанный каталогвместо этого создается файл .git , внутри которого есть это:

$ cat .git
gitdir: ../../../../.git/modules/app/src/emberlabs/openflame

Моя проблема: я нахожусь на git 1.7.9, и мне нужны файлы клонированного подмодулянаходиться в моем локальном клоне именно там, где я их ожидаю, вместо того, где git указывает, что они должны быть - как это было до git 1.7.8, где я мог найти каталог клона подмодуля и найти все файлы клонированного коммита.1013 *

Любые предложения или идеи о том, как ... ну, re - добиться этого?

1 Ответ

8 голосов
/ 28 февраля 2012

Нашел решение для этого.

Редактирование файла {$project_root}/.git/modules/{$submodule_path}/.git/config и удаление строки worktree в [core] и копирование всего каталога .git из {$project_root}/.git/modules/{$submodule_path}/ в фактическое местоположение подмодуля (после удаления файла .git , где был субмодуль), а затем запуск git checkout -f {$branch}, похоже, восстановил все файлы. Однако не совсем уверен, что это полное решение.

...