2015-05-19 7 views
6

I powodzeniem w stanie konwertować podmoduły do ​​podkatalogów w użyciu komend, takich jak metody opisane w tych dwóch przykładach:git: Konwersja podkatalog z modułem

Submodule->Subdir

Subdir->Submodule

wyzwaniem jest osiągnięcie tego sukcesu w katalogu, przy zachowaniu jego historii poprzez każdą konwersję.
Te dwie metody opisane powyżej sprawdziły się w trywialnym repozytorium eksperymentalnym, ale nie obsługują bardziej złożonego repozytorium. np. repozytorium z arbitralnym wzorcem zatwierdzania.

Problem uwidacznia się podczas wykonywania

git filter-branch --subdirectory-filter <lib-directory> -- --all

gdy próbuje przekonwertować katalog (który był wcześniej modułem) z modułem. Jeśli poprawnie rozumiem. To było rzucanie:

Rewrite c95281d27e4602e9af50146eefcf7c28f5bb4f35 
     (2/11)a989b207d3757f9803fd50fa2d77908a4dc1330e 
fatal: failed to unpack tree object 
     c95281d27e4602e9af50146eefcf7c28f5bb4f35:lib/test_submodule 
Could not initialize the index` 

z czego nie było absolutnie żadnych podobnych wyników online.
Ustalono, że miało to miejsce w związku z powtarzającym się odwołaniem do modułu podrzędnego w ramach INDEKSU, przy czym po przeliczeniu modułu podległego wystąpiłby powyższy błąd.

Czy jest jakiś sposób wykonania filter-branch, który pozwoli uniknąć tych wcześniejszych odniesień do submodułu?

Edytuj: Wróciłem do tego zagadnienia ponownie i nadal nie znalazłem sposobu na jego rozwiązanie. Używanie metody Subdir-> Submodule z git filter-branch działa dobrze dla normalnego katalogu; ale zawiesza się, gdy uderza w moduł. Wypadek, który utrzymuje się dzieje w tej sekcji w obrębie git:

https://github.com/github/git-msysgit/blob/master/git-filter-branch.sh#L300

nie mogę sensu z nim jednak.

Odpowiedz

8

Dla mnie to działało po dodaniu końcowy ukośnik do katalogu:

$ git filter-branch --subdirectory-filter htdocs/typo3_src -- --all 
Rewrite cbe03e13da071403a2632263f1760b560398cdd3 (1/12) (0 seconds passed, remaining 0 predicted) 004b20fc15023539484c7f5990b99780f54dc0ac 
fatal: failed to unpack tree object cbe03e13da071403a2632263f1760b560398cdd3:htdocs/typo3_src 
Could not initialize the index 

$ git filter-branch --subdirectory-filter htdocs/typo3_src/ -- --all 
Rewrite ec6e3c7212f1080fc052c87b1129335ab5bee524 (5/10) (1 seconds passed, remaining 1 predicted)  
Ref 'refs/heads/master' was rewritten 
Ref 'refs/remotes/origin/master' was rewritten 
Ref 'refs/remotes/origin/develop' was rewritten 
WARNING: Ref 'refs/remotes/origin/master' is unchanged 
WARNING: Ref 'refs/tags/0.0.1' is unchanged 
0

Zamiast używać opcji rev-list - all, spróbuj zamiast tego filtrować przez commit hash.

git filter-branch --subdirectory-filter <lib-directory> <hash>... 

popełnić które spowodowało problem w moim przypadku był jeden zawierający Subproject commit. Przykład:

git filter-branch --subdirectory-filter <lib-directory> c95281d27e4... 
Powiązane problemy