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
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.