Me gustaría dividir los módulos distribuidos con una aplicación más grande en submódulos separados y mantener la capacidad de extracción desde la parte superior.Uso repetido de git-filter-branch para reescribir nuevas confirmaciones
Esto es más complejo que Detach subdirectory into separate Git repository. No solo utilizo git-filter-branch una vez, sino que quiero mantener la capacidad de realizar cambios en la cadena ascendente una vez que lo he hecho (y upstream no).
Simplemente volviendo a ejecutar git-filter-branch en el historial completo desde el inicio ahora incluyendo nuevas confirmaciones no encontradas en mi historial reescrito no es una opción ya que hay cientos de módulos para los cuales tengo que hacer esto y el número de confirmaciones acercándose a 100.000.
Supongo que esto implica limitar la historia a solo las nuevas confirmaciones, reescribirlas y luego agregarlas después de las confirmaciones previamente rescritas, pero no estoy seguro de cómo hacerlo, y tal vez haya un mejor enfoque.
Sería bueno si las ramas y las etiquetas pudieran conservarse también, pero esto no es absolutamente necesario y si esto complica las cosas, preferiría perderlas.
También me gustaría saber acerca de esto. Cada vez que obtengo un repositorio de dependencia, tengo que ejecutar filter-branch nuevamente para fusionar las actualizaciones en mi proyecto (no quiero fusionar todo el repositorio). –
Me sorprendió que a nadie se le ocurrió una respuesta, después de todo parece un desafío interesante. Bueno, yo mismo pirateé algo, pero olvidé publicarlo aquí. Su interés me recordó: a continuación está mi solución. – tarsius
¿Alguna vez has visto [* git subárbol *] (http://github.com/apenwarr/git-subtree/blob/master/git-subtree.txt)? Puede dividir un subárbol en una nueva rama y, con la opción '--rejoin', hacerlo de forma incremental. –