Краткий ответ - «да». Ветвь фильтра работает путем копирования коммитов в новые и улучшенные коммиты с различными идентификаторами ha sh.
Если скопированный репозиторий используется в качестве подмодуля, репозиторий суперпроекта содержит коммиты которые хранят необработанные идентификаторы ha sh коммитов субмодуля. Поскольку новые и улучшенные коммиты имеют различных га sh идентификаторов, суперпроект теперь содержит старые (т.е. неправильные) идентификаторы ha sh, по крайней мере для любых коммитов, которые были скопированы и заменяется следующим образом.
Это означает, что теперь вы должны заменить любые коммиты в суперпроекте, которые имеют в качестве gitlink идентификатор ha sh идентификатора коммита, который был заменен на новый и улучшенный коммит в хранилище субмодулей. Делать это нетривиально.
Команде filter-branch можно сказать сохранить отображение от старых к новым идентификаторам ha sh, используя опцию --state-branch
. (Эта опция была новой в Git 2.15.0.) Вам понадобится это отображение состояний. Непонятно , как использовать его при запуске ветки фильтра над суперпроектом, но вам понадобится фильтр, который находит коммиты, содержащие gitlinks, содержащие записи старых коммитов и сообщающие фильтру суперпроекта заменить их обновленными ссылками.