Una de las cosas que me gusta de la forma en que configuré Subversion es que puedo tener un único repositorio principal con múltiples proyectos. Cuando quiero trabajar en un proyecto, puedo consultar solo ese proyecto. Me gusta esto
\main
\ProductA
\ProductB
\Shared
luego
svn checkout http://.../main/ProductA
Como nuevo usuario de git, quiero explorar un poco de las mejores prácticas en el campo antes de comprometerme con un flujo de trabajo específico. Por lo que he leído hasta ahora, git almacena todo en una sola carpeta .git en la raíz del árbol del proyecto. Entonces podría hacer una de dos cosas.
- Configure un proyecto separado para cada producto.
- Configure un solo proyecto masivo y almacene los productos en subcarpetas.
Existen dependencias entre los productos, por lo que el proyecto masivo único parece apropiado. Usaremos un servidor donde todos los desarrolladores pueden compartir su código. Ya tengo esto funcionando a través de SSH y HTTP y esa parte me encanta. Sin embargo, los repositorios en SVN ya tienen muchos GB de tamaño, por lo que arrastrar todo el repositorio en cada máquina parece una mala idea, especialmente porque se nos factura por un ancho de banda de red excesivo.
Me imagino que los repositorios del proyecto del kernel de Linux son igualmente grandes, por lo que debe haber una forma adecuada de manejar esto con Git, pero aún no lo he descubierto.
¿Existen pautas o mejores prácticas para trabajar con repositorios de proyectos múltiples muy grandes?
git diff
ygit status
ambos aprendieron a tener en cuenta los estados de los submódulos incluso si se ejecutan desde el proyecto principal. Simplemente no puede perderse la modificación del submódulo.GitSlave le permite administrar varios repositorios independientes como uno. Cada repositorio puede ser manipulado por comandos de git regulares, mientras que gitslave le permite ejecutar adicionalmente un comando en todos los repositorios.
Repo-per-project tiene ventajas con la creación de componentes y las compilaciones simplificadas con herramientas como Maven. Repo-per-project agrega protección al limitar el alcance de lo que el desarrollador está cambiando, en términos de confirmaciones erróneas de basura.
fuente