Subtree de Git o GitSlave como alternativas a los Submodules de Git?

Siento que el uso de submodules Git es de alguna manera problemático para mi flujo de trabajo de desarrollo. Descubrí que el subtree y el gitslave de Git podrían ser una mejor solución. No puedo encontrar ninguna información de comparación sobre estas 2 opciones.

Preguntas

¿Cuál es mejor y por qué?

¿Estos 2 tienen una versión de Windows para trabajar?

Lo mejor para usted depende de sus necesidades, deseos y flujo de trabajo. En algunos sentidos son semi isomorfos, es solo que algunos son mucho más fáciles de usar que otros para tareas específicas.

  • gitslave es útil cuando controlas y desarrollas en los subproyectos más o less al mismo time que el superproyecto, y además cuando normalmente quieres labelr, ramificar, empujar, tirar, etc. todos los repositorys al mismo time. gitslave nunca ha sido probado en Windows que yo sepa. Requiere perl.

  • git-submodule es mejor cuando no se controlan los subproyectos o más específicamente se desea arreglar el subproyecto en una revisión específica incluso cuando el subproyecto cambia. git-submodule es una parte estándar de git y, por lo tanto, funcionaría en Windows.

  • git-subtree proporciona una interfaz de fusión de subtree incorporada de git. Es mejor cuando prefieres tener un historial de git "unificado" de un solo repository. A diferencia de la estrategia de combinación de subtree, es más fácil exportar los cambios a los diferentes treees (directory) de vuelta al proyecto original, pero no es tan automático como lo es con gitslave o incluso git-submodule.

  • Repo es en teoría similar a gitslave, pero no está tan bien documentado para las operaciones que no son de Android que he encontrado. Está bastante dedicado al model de desarrollo de Google Android y solo admite de forma nativa un puñado de commands de git (aunque puede ejecutar commands arbitrarios) y el soporte nativo limitado no es compatible, por ejemplo, con un repository centralizado para enviar y retirar un twig parece bastante difícil.

  • El mr de kitenet es lo que desearía usar si tiene varios sistemas de control de versiones en uso, pero está limitado en su mayoría para superproyectos de solo git debido a su enfoque de denominador común más bajo. Hay forms de ejecutar commands arbitrarios, pero no están tan bien integrados.

Actualmente uso submodules para desarrollo y no solo para relacionar bibliotecas de terceros. Hay algunas maneras en que puede hacer la vida más fácil con los submodules, especialmente cuando son la fuente de los conflictos de fusión o rebase. Mira a ls-tree para get los 2 commits involucrados en un conflicto en el submodule. Esta es probablemente la parte más difícil de los submodules para las personas. Por ahora, las secuencias de commands harán que trabajar con esto sea mucho más fácil. Las versiones futuras de Git deberían tener un mejor soporte nativo para tratar con ellos.

Espero que esto ayude.