Git: conversión de un subdirectory a un submodule

He logrado convertir submodules en subdirectorys con commands como los methods descritos en estos dos ejemplos:

Submodule-> Subdir

Subdir-> Submodule

El desafío es lograr esto con éxito en un directory, preservando su historial a través de cada conversión .
Estos dos methods descritos anteriormente han funcionado bien en un repository experimental trivial, pero no manejan un repository más complejo. por ejemplo, un repository con un patrón de compromiso arbitrario.

El problema se expone al ejecutar

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

cuando intenta convertir un directory (que anteriormente era un submodule) a un submodule. Si entiendo correctamente. Esto fue arrojando:

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

de los cuales no hubo absolutamente ningún resultado similar en línea.
Se pensó que esto estaba ocurriendo debido a la reference recurrente al submodule dentro del ÍNDICE, por lo que cuando se convertía el submodule, se producía el error anterior.

¿Hay alguna forma de realizar una filter-branch que permita evitar estas references anteriores al submodule?

Editar: volví a mirar este tema nuevamente, y todavía no he encontrado la manera de resolverlo. Usando el método Subdir-> Submodule con git filter-branch funciona bien para un directory normal; pero se bloquea cuando golpea un submodule. El crash que sigue sucediendo en esta sección dentro de git:

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

Sin embargo, no puedo darle mucho sentido.

Para mí funcionó después de agregar una barra al directory:

 $ git filter-branch --subdirectory-filter htdocs/typo3_src -- --all Rewrite cbe03e13da071403a2632263f1760b560398cdd3 (1/12) (0 seconds passed, remaining 0 pnetworkingicted) 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 pnetworkingicted) 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 

En lugar de usar la opción rev-list –all, intente filtrar por commit hash en su lugar.

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

El compromiso que causó el problema en mi caso fue el que contenía el Subproject commit . Ejemplo:

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