Jak zmienić nazwę repozytorium git (projektu), który zawiera submoduły w swoich podkatalogach
Nigdy nie spodziewam się, że zmiana nazwy repozytorium git, a dokładniej, że folder najwyższego poziomu zawiera projekt, byłaby tak trudna. Tak, projekt zawierający kilka submodułów, ale jest tofolder najwyższego poziomu który wymaga zmiany nazwy, a niefolder podmodułu. Wygląda na to, że Git nagrywa jakieś dziwne rzeczyabsolutne ścieżki w jego mechanizmach submodułowych.
Załóżmy, że tak
Wszystkie twoje projekty znajdują się w/tmp
.Maszproj_master
iproj_mod
.Klonujeszporj_master
tak jakproj_ALL
następnie klonujprom_mod
jako submoduł w nim.Zmieniasz nazwęproj_ALL
doproj_onebillion
. Potem dzieje się czarna magia.Następujące kroki pozwolą odtworzyć wspomniany problem. Wersja gita, której używam to:
$ git --version
git version 1.7.9.5
Inicjalizujproj_master
.
$ cd /tmp
$ mkdir proj_master; cd proj_master
$ git init .
$ touch README
$ git add .; git commit -m "hello proj_master"
Inicjalizujproj_mod
.
$ cd /tmp
$ mkdir proj_mod; cd proj_mod
$ git init .
$ touch README
$ git add .; git commit -m "hello proj_mod"
Klonproj_master
tak jakproj_ALL
i klonujproj_mod
jako submoduł.
$ 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.
Przemianowaćproj_ALL
doproj_onebillion
. Spotkaj się z błędem krytycznym.
$ cd /tmp
$ mv proj_ALL proj_onebillion
$ cd proj_onebillion
$ git status
fatal: Not a git repository: /tmp/proj_ALL/.git/modules/mod
Jedna rzecz, którą należy zauważyć, to.git
plik w katalogu podmodułu.
$ cat /tmp/proj_ALL/mod/.git
gitdir: /tmp/proj_ALL/.git/modules/mod
Tak, absolutna ścieżka. Po raz pierwszy zdaję sobie sprawę, że git jest świadomy czegoś poza zakresem najwyższego poziomu folderu repo.
to jest to! Powtarzam to jeszcze raz, że zmieniam nazwę folderu projektu najwyższego poziomu, a nie folderu podmodułów. sprawdzampytanie schmucka, który próbował zmienić nazwę folderu podmodułu, nie wydaje się więc tak pomocny w moim problemie.
Jeśli przegapię coś, co powinno zostać przeczytane wcześniej, przepraszam. Wszystkim facetom wszelkie rady są mile widziane.