2012-03-26 14 views
11

Mam repozytorium git z submodułami w katalogu projects/myRepo i chcę zmienić nazwę katalogu na projects/my-repo.Jak zmienić nazwę repozytorium git za pomocą submodułów?

Według pytania this można to zrobić po prostu za pomocą mv. Ale w repo z submodules git powtarza mi

krytyczny: nie repozytorium git: Projekty/myRepo/.git/ścieżka/do/submodule```

nawet git status.

modułem config:

[submodule "path/to/submodule"] 
    path = path/to/submodule 
    url = https://github.com/user/projectName.git 

Jakoś 'droga wewnętrzna' dla modułem nie zostanie zaktualizowany ?! Czy istnieje sposób, aby powiedzieć git, aby zaktualizować te moduły częściowe?

+0

To powinno po prostu działać. Co zawiera plik .gitmodule? – Weston

+0

@Weston, zapoznaj się z zaktualizowanym pytaniem. Ale nawet po usunięciu tej sekcji z pliku .gitmodules pojawia się ten sam błąd. Kiedy zmieniam nazwę katalogu nadrzędnego na oryginalną nazwę git, już nie narzekam. – schmunk

+0

Hmm .. Właśnie próbowałem zrobić repo testowe z modułem częściowym. Następnie sklonowałem go, zainicjowałem i zaktualizowałem submoduł w klonie, a następnie zmieniłem nazwę na klon z mv. Wszystko wydaje się działać zgodnie z oczekiwaniami ...? – Weston

Odpowiedz

0

Od Weston „s Test (klon, init i aktualizacja z modułem w sklonowanego repo) pracował zgodnie z oczekiwaniami po zmianie nazwy katalogu tym wspomnianym modułem, podejrzewam, coś musiało być nie tak w modułem sama .git w oryginalnej Git moduł repo.

Można porównać/wyszukać dowolny plik z odniesieniem "myRepo" w tym pierwszym module.
możesz również porównać zawartość dwóch submodułów (pierwszy z nich próbował zmienić nazwę, a drugi z repozytu, który sklonowałeś)

+0

Proszę zanotować nazwiska tutaj .. Ja, nie OP, zrobiłem test. :-) Ale może OP powinien wykonać ten sam test, aby zweryfikować swoją instalację. – Weston

+0

@Weston przepraszam, nie byłam całkowicie przebudzona kiedy to pisałem;) – VonC

+0

Nie udało mi się odtworzyć problemu, więc myślę, że coś pomieszałem podczas refaktoryzacji projektu. Gdybym miał czas, zbadam zepsute repo, do tego czasu stworzyłem nowy klon, który działa dobrze. Dzięki za pomoc. – schmunk

2

Po zmianie katalogu projektu wystąpił ten sam błąd. Mam projekt iOS 6 XCode 4, ale to nie powinno mieć znaczenia.

Dla każdego modułu podległości należy zmienić bezwzględną ścieżkę, w której sądzisz. Ścieżka jest ustawiana w pliku .git dla tego modułu. .git w module podrzędnym jest plik w przeciwieństwie do katalogu katalogu w standardowym katalogu git.

Dla każdego submodułu zmień wiersz .gitdir w pliku .git. Oto przykład z mojego projektu:

pliku: /path/to/project/submodules/RestKit/.git

Przed gitdir: /path/to/project//.git/modules/ submoduły/RestKit

Po gitdir: /path/to/project//.git/modules/submodules/RestKit

+2

Musiałem również zmienić ścieżkę ** worktree ** w pliku .git/modules/path/to/project/submodules/RestKit/config – tuxinaut

3

zrobiłem doświadczenie dokładnie takie samo zachowanie. Udało mi się to naprawić, usuwając katalogi z submodułami, odtwarzając je jako puste katalogi z poprawną nazwą, a następnie uruchamiając git submodule update --init, aby je ponownie zainicjować. Wszystko ustalone teraz. Prawdopodobnie niektóre problemy z uprawnieniami (wcześniej pobrałem te katalogi z kopii zapasowej, a uprawnienia na nich są czasami dziwne).

0

Dziś miałem ten sam problem, aby zmienić nazwę submodule i wreszcie Naprawiłem go za pomocą następujących czynności:

Załóżmy, że stara nazwa moduł jest old/module a nowy jest new/module/path

  1. u korzeń repo (repo_root) mv old/module new/module/path
  2. przejdź do .git/modules
    1. mv old/module new/module/path (najpierw utwórz folder, jeśli to konieczne)
    2. zmiana new/module/name/config: zaktualizuj wpis worktree. Powinno być relatywna ścieżka z tego pliku konfiguracyjnego do repo_root/new/module/path
  3. iść do repo_root i edytować new/module/path/.git zmień gitdir do względnej ścieżki z tego pliku do repo_root/.git/modules/new/module/path
  4. zmiany .git/config z repo nadrzędnego: znajdź linię zawierającą [submodule "old/module"] i aktualizację do [submodule "new/module/path"]
Powiązane problemy