Tengo una serie de proyectos separados que comparten un código común. ¿Cuál es la mejor práctica para lograr esto en Git, y específicamente en SmartGit?
Tener todo en un repository gigante
Tenga un repository para cada proyecto, y un repository para código compartido, y use Git Submodules .
Tenga un repository para cada proyecto y un repository de código compartido, y use Git Subtrees . ¿Alguien puede decirme si esto es compatible con SmartGit y cómo se puede lograr?
¿Cuáles son las posibles dificultades con estos methods y cuáles son las mejores prácticas con SmartGit?
Recomiendo tener un repository para todos los proyectos o usar Submodules:
Si su código común está estrechamente relacionado con sus proyectos, las refactorizaciones y otros types de cambios (API) de su código común probablemente requerirán cambios en todos sus proyectos, de modo que si puede hacer todo con un compromiso en un repository , lo hará Pasar less time haciendo el control de versiones (con Git). Por ejemplo, los submodules de Git no pueden simplemente apuntar al CABEZAL de una twig, sino solo a un compromiso específico. Puede ser engorroso actualizar siempre sus submodules a la última confirmación.
Si su código común se parece más a una biblioteca independiente y es suficiente para actualizar sus proyectos de vez en cuando con versiones más nuevas de esa biblioteca, los submodules serán la mejor opción. Ellos están bien respaldados con SmartGit y tener repositorys separados le da, por ejemplo, la flexibilidad de compartir solo algunos de sus repositorys con otros, más adelante.
No hay soporte especial para Subtrees en SmartGit.
Yo usaría proyectos separados también. Hemos tenido problemas de memory con files más grandes y git + SmartGit. Estoy en dialog con syntevo en este momento. Con la última versión de SmartGit, la capacidad de copyr comentarios es muy útil. Espero que esto ayude