Turing una aplicación monolítica en una architecture basada en Microservice y manteniendo la historia de GIT

Planeo dividir una aplicación monolítica en una architecture basada en micro services, pero quiero mantener la historia de GIT.

El monolit debería dividirse en tres micro services.

Mi primer enfoque sería copyr el repository de GIT tres veces y eliminar todas las partes no pertenecientes al dominio específico del nuevo micro service que debería mantener viva la mayor parte del historial de git. Pero no estoy seguro si esta es la mejor manera de mantener el historial de control de versiones.

Puede usar git filter-branch con la opción --subdirectory-filter para filtrar un subdirectory de su repository y así hacer que el repository contenga la subcarpeta como directory raíz. Esto se describe en el paso 5 aquí , la documentation aquí también podría ayudar. Tendría que clonar su repository tres veces y ejecutar filter-branch en cada uno de ellos para una parte diferente de su proyecto.

Dado que (con dicho --subdirectory-filter ) solo los subdirectorys pueden tratarse de esta manera, es posible que tenga que reorganizar su repository antes. La ventaja sobre la eliminación ingenua de otras partes es, sin embargo, que al usar filter-branch solo preseleccionará el historial que concierne al contenido real de su repository, y no tendrá ningún historial de las partes filtradas.