Una de las cosas que me gustan de la manera que tengo de Subversion configuración es que puedo tener un único repositorio principal con múltiples proyectos. Cuando quiero trabajar en un proyecto, puedo verificar solo ese proyecto. Al igual que esteGIT diseño repositorio de servidor con varios proyectos
\main
\ProductA
\ProductB
\Shared
continuación
svn checkout http://.../main/ProductA
Como nuevo usuario a git quiero explorar un poco de las mejores prácticas en el campo antes de comprometerse a 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 productos en subcarpetas.
Existen dependencias entre los productos, por lo que el único proyecto masivo parece apropiado. Utilizaremos un servidor donde todos los desarrolladores puedan compartir su código. Ya tengo esto funcionando a través de HTTP SSH & y esa parte me encanta. Sin embargo, los repositorios en SVN ya tienen muchos GB de tamaño, así que arrastrar todo el repositorio en cada máquina parece una mala idea, especialmente porque se nos factura un excesivo ancho de banda de red.
Me imagino que los repositorios de proyectos kernel de Linux son igual de grande, así que debe ser una forma adecuada de manejar esto con Git, pero simplemente no han descubierto todavía.
¿Existen directrices o mejores prácticas para trabajar con grandes repositorios de múltiples proyectos?
También vale la pena señalar que si incluye submódulos en el proyecto principal, cada submódulo es su propio repositorio git, por lo que puede incluir versiones particulares de los submódulos, ciertas etiquetas, etc. –
@VonC: Esto suena similar a el soporte "externo" provisto por subversión. Probamos esto y nos pareció extremadamente engorroso actualizar constantemente las referencias de versión en los externos ya que los proyectos se desarrollan simultáneamente con dependencias entre sí. ¿Hay otra opción? –
@Paul: sí, en lugar de actualizar la versión del proyecto principal, puede desarrollar sus subproyectos directamente desde el proyecto principal (consulte http://stackoverflow.com/questions/1979167/git-submodule-update/1979194#1979194), o hace referencia en un sub-repo de un origen hacia el mismo sub-repo desarrollado en otra parte: desde allí solo tiene que sacar de ese sub-repo los cambios realizados en otro lugar. En ambos casos, no olvides comprometer el proyecto principal para registrar la nueva configuración. sin propiedad "externa" para actualizar.Todo el proceso es mucho más natural. – VonC