¿Hay una alternativa GIT para SVN Externals?

Actualmente uso SVN para administrar las configuraciones del server jboss y necesito tener varias copys del mismo subdirectory en cada copy de trabajo, pero haciendo reference al mismo directory en el server para que cuando cambie algún file, cada copy obtenga la actualización.

Ejemplo:

  • / server / bin (compartido)
  • / server / node-01 (copy del repository / server / nodo)
  • / server / node-02 (copy del repository / server / nodo)

¿Es posible lograr lo mismo usando git? No pude encontrar una respuesta definitiva en las preguntas similares (maney).

La mejor aproximada que conozco es git-submodule [1].

Puede definir sub-repositorys y hacer que el repository "padre" contenga conceptualmente un hash que especifique la revisión exacta que debe tener cada sub-repository.

Cuando su HEAD se mueva en el sub-repository, "estado de git" y "git diff" lo informarán como un cambio de hash en el repository padre.

Desafortunadamente, los submodules de Git son un poco torpes:

  • Cuando ingresa el repository principal, no actualiza automáticamente el repository secundario. En cambio, los repos secundarios aparecerán como si hubiera realizado cambios locales (que revierten su nueva position a donde estaban).

  • Tienes que llamar explícitamente a "git submodule update" cada vez (o guiarlo, por supuesto) después de tirar / fusionar el repo padre.

Esto también significa que "git rebase" y otras operaciones en el padre no funcionan tan bien en presencia de submodules. Pero tiene un control detallado sobre el comportamiento aquí, por lo que no hay nada que no pueda solucionar.

[1] http://kernel.org/pub/software/scm/git/docs/git-submodule.html