SVN: ¿equivalente externo en GIT?

Tengo dos proyectos SVN en uso desde otro SVN usando svn: externals .

¿Cómo puedo tener la misma estructura de disposition de repository en GIT?

Git tiene dos enfoques similares a, pero no exactamente equivalentes a svn: externals:

  • Subtree merges inserta el código del proyecto externo en un subdirectory separado dentro de su repository. Esto tiene un process detallado para configurar y luego es muy fácil para otros usuarios, ya que se incluye automáticamente cuando el repository se retira o se clona. Esta puede ser una forma conveniente de include una dependencia en su proyecto.
    Es fácil extraer los cambios del otro proyecto, pero es complicado devolver los cambios. Y si el otro proyecto tiene que fusionarse con su código, los historiales del proyecto se fusionan y los dos proyectos se convierten efectivamente en uno.

  • Los submodules de Git ( manual ) se vinculan a un compromiso particular en el repository de otro proyecto, al igual que svn: externals con un argumento -r . Los submodules son fáciles de configurar, pero todos los usuarios tienen que administrar los submodules, que no se incluyen automáticamente en las cajas (o clones).
    Aunque es fácil enviar los cambios al otro proyecto, hacerlo puede causar problemas si el repository ha cambiado. Por lo tanto, generalmente no es apropiado enviar los cambios a un proyecto que se encuentra en desarrollo activo.

Como mencioné en " actualización de la nueva versión del submodule Git ", puede lograr la misma function externa svn con los submodules git1.8.2.

 git config -f .gitmodules submodule.<path>.branch <branch> 

Esto es suficiente para que un submodule siga una bifurcación (como en la última confirmación de una twig remota de un repository de subida de submodules). Todo lo que necesitas hacer es un:

 git submodule update --remote 

Eso actualizará el submodule.

Más detalles en " git submodule tracking latest ".

Para convertir un submodule existente en uno que rastrea una twig :
vea todos los pasos en " Submodules de Git: especifique una twig / label ".

Deberías ver los submodules de git , debería permitir casi exactamente lo que estás buscando.

Para la última versión de git sugiero leer sobre los submodules de git en la documentation oficial de git