¿Puedo anidar repositorios de Git? Yo tengo:
/project_root/
/project_root/my_project
/project_root/third_party_git_repository_used_by_my_project
¿Tiene sentido que git init/add
el /project_root
de facilitar la gestión de todo localmente o tengo para administrar my_project
y la tercera una de las partes por separado?
Coloque sus bibliotecas de terceros en un repositorio separado y use submódulos para asociarlas con el proyecto principal. Aquí hay un recorrido:
http://git-scm.com/book/en/Git-Tools-Submodules
Al decidir cómo segmentar un repositorio, generalmente decidiría según la frecuencia con la que los modificaría. Si es una biblioteca de terceros y solo los cambios que está haciendo se están actualizando a una versión más nueva, entonces definitivamente debe separarla del proyecto principal.
fuente
Solo para completar:
Hay otra solución, recomendaría: fusión de subárbol .
A diferencia de los submódulos, es más fácil de mantener. Crearía cada repositorio de la manera normal. Mientras esté en su repositorio principal, desea fusionar el maestro (o cualquier otra rama) de otro repositorio en un directorio de su directorio principal.
Luego, para extraer el otro repositorio en su directorio (para actualizarlo), use la estrategia de combinación de subárbol:
Estoy usando este método desde hace años, funciona :-)
Puede encontrar más información sobre esta forma, incluida la comparación con submódulos, en este documento de instrucciones de git .
fuente
Podrías agregar
a
eso debería evitar que el repositorio anidado se incluya en el repositorio principal, y puede trabajar con ellos de forma independiente.
Pero: si un usuario ejecuta git clean -dfx en el repositorio principal, eliminará el repositorio anidado ignorado. Otra forma es hacer un enlace simbólico a la carpeta e ignorar el enlace simbólico. Si luego ejecuta git clean, el enlace simbólico se elimina, pero el repositorio 'anidado' permanecerá intacto, ya que realmente reside en otro lugar.
fuente
git-subtree te ayudará a trabajar con múltiples proyectos en un solo árbol y a mantener un historial separable para ellos.
fuente
Resumen.
Si. Sin embargo, por defecto, git no rastrea la
.git
carpeta del repositorio anidado. Git tiene características diseñadas para administrar repositorios anidados (sigue leyendo).Probablemente no tenga sentido ya que git tiene características para administrar repositorios anidados. Las funciones integradas de Git para administrar repositorios anidados son
submodule
ysubtree
.Aquí hay un blog sobre el tema y una pregunta SO que cubre los pros y los contras de usar cada uno.
fuente
Usaría un repositorio por proyecto. De esa manera, la historia se vuelve más fácil de navegar.
También verificaría la versión de la biblioteca de terceros que estoy usando, en el repositorio del proyecto que la usa.
fuente