Я никогда не ожидаю переименования репозитория git, который, в частности, является папкой верхнего уровня, содержащей проект, будет так сложно. Да, проект, содержащий некоторые подмодули, но это папка верхнего уровня, которая нуждается в переименовании, а не в папку подмодуля. Git, кажется, записывает некоторые нечетные абсолютные пути в своих механизмах подмодуля.
Предположим, что
- Все ваши проекты расположены в
/tmp
. - У вас есть
proj_master
иproj_mod
. - Вы клонируете
porj_master
какproj_ALL
, затем клонируетеprom_mod
в качестве подмодуля в нем. - Переименуйте
proj_ALL
вproj_onebillion
. Затем происходит черная магия.
Следующие шаги приведут к воспроизведению упомянутой проблемы. Версия git, которую я использую:
$ git --version
git version 1.7.9.5
-
Инициализировать
proj_master
.$ cd /tmp $ mkdir proj_master; cd proj_master $ git init . $ touch README $ git add .; git commit -m "hello proj_master"
-
Инициализировать
proj_mod
.$ cd /tmp $ mkdir proj_mod; cd proj_mod $ git init . $ touch README $ git add .; git commit -m "hello proj_mod"
-
Клонировать
proj_master
какproj_ALL
и клонироватьproj_mod
как подмодуль.$ cd /tmp $ git clone proj_master proj_ALL $ cd proj_ALL $ git submodule add /tmp/proj_mod ./mod $ git add .; git commit -m "hello proj_ALL" $ git status % Everything is OK.
-
Переименуйте
proj_ALL
вproj_onebillion
. Встречайте фатальную ошибку.$ cd /tmp $ mv proj_ALL proj_onebillion $ cd proj_onebillion $ git status fatal: Not a git repository: /tmp/proj_ALL/.git/modules/mod
Одно замечание - это файл .git
в каталоге подмодулей.
$ cat /tmp/proj_ALL/mod/.git
gitdir: /tmp/proj_ALL/.git/modules/mod
Да, абсолютный путь. Впервые я понимаю, что git знает что-то, что выходит за пределы папки репо верхнего уровня.
Что это. Я повторяю, что еще раз я переименую папку проекта верхнего уровня, а не папку подмодуля. Я проверяю вопрос schmuck, который пытался переименовать папку подмодуля, поэтому кажется, что это не очень полезно для моей проблемы.
Если я пропущу что-то, что должно было быть прочитано раньше, я приношу свои извинения. Все ребята приветствуются.