Недавнее изменение в Git изменило способ обработки каталога .git
при использовании подмодулей.
Вместо того, чтобы иметь один .git
на каждый подмодуль, все теперь находится в директории "root level" .git
(той, которая соответствует рабочей копии, включая подмодули).
Затем в каждом подмодуле создается файл, который указывает на новое местоположение каталога .git
.
В мой проект, у меня есть следующий .gitmodules
файл:
[submodule "tests/shared-tests"]
path = tests/shared-tests
url = git://github.com/roboptim/roboptim-shared-tests.git
[submodule "cmake"]
path = cmake
url = git://github.com/jrl-umi3218/jrl-cmakemodules.git
Когда я делаю git clone --recursive
, я получаю:
$ cat cmake/.git
gitdir: /home/moulard/profiles/default-x86_64-linux-ubuntu-12.04.1/src/unstable/roboptim/roboptim-core/.git/modules/cmake
В настоящее время я использую Git 1.8.1.5.
Мои вопросы:
- Почему изменилось это поведение? Я не вижу очевидной выгоды для этой новой стратегии.
- Как я могу безопасно перемещать рабочую копию? (если я переведу свою рабочую копию, я получаю сообщение об ошибке, сообщающее мне, что путь к сломанному gitdir больше не является хранилищем Git)
Обратите внимание, что это не то же самое, что предыдущий вопрос Перемещение родительского каталога репозитория Git, содержащего подмодули, в том смысле, что я уверен, что это это не проблема, связанная с наличием абсолютного пути в моем файле .gitmodules
.