Недавнее изменение в Git изменило способ обработки каталога .git
при использовании подмодулей. Вместо того, чтобы иметь один .git
на каждый подмодуль, теперь все находится в каталоге «root level» .git
(тот, который соответствует рабочей копии, включая подмодули).Перемещение рабочей копии git, содержащей подмодули
Затем в каждом подмодуле создается файл, который указывает на новое местоположение каталога .git
.
В my project, у меня есть следующий .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 больше)
Обратите внимание, что это не то же самое, что и предыдущий вопрос Moving the parent directory of a git repository that contains submodules в что я уверен это не проблема, связанная с наличием абсолютного пути в моем .gitmodules
файле.
Если все не удается, то, возможно, http://stackoverflow.com/a/15504813/6309? – VonC
На самом деле я пробовал с последним выпуском Git и HEAD мастера, но пока не повезло, если нет команды git, о которой я не знаю ... –
@ThomasMoulard последнее время 1.8.3 в вашем случае? – VonC