Tabla de Contenidos

Submódulos

Sección perteneciente al curso Control de versiones con Git Avanzado.

Introducción

A veces estaremos desarrollando una aplicación modular que puede tener partes de código que están compartidas con otras aplicaciones o en las que hay un grupo de desarrolladores que solo toca cierto código. En estos casos, tener un solo repositorio git para toda la aplicación, implica que todos los desarrolladores estén tocando un mismo código que podría estar separado.

Para esto, git ofrece los submódulos: repositorios git, dentro de otro repositorio git. Un repositorio git “padre” que está controlando los cambios en repositorios “hijo”. Estos repositorios hijo pueden estar aislados entre sí y no saber nada del padre.

Repositorios anidados

Tener repositorios dentro de otros (repositorios anidados) de manera independiente es posible con git gracias a los submódulos.

Útil para cuando hay jerarquía de proyectos/módulos.

Hay poca documentación sobre los submódulos y es muy técnica lo que hace que sea algo difícil manejarse con ellos

Como crearlos y como trabajar con ellos

Añadir submódulo al módulo padre

git submodule add <URL> [subcarpeta]

El submódulo tendrá su propio repositorio remoto, que será totalmente independiente del repositorio padre. El padre tendrá referencias a él.

El repositorio padre generará un archivo .gitmodules con información sobre los submódulos que le hemos añadido.

Clonar un módulo padre con sus submódulos

Método 1:

git clone <URL> --recurse-submodules

Método 2:

git clone <URL>
git submodule init
git submodule update

Actualizar submódulos (desde repositorio padre)

git pull
git submodule update [nombre_submódulo]

Conclusión

Recursos