Submódulos de git. ¿Qué son y por qué usarlos?

Submódulos de git. ¿Qué son y por qué usarlos?

¡Hola!

Hoy vamos a ver qué son los submódulos de git y cómo podemos utilizarlos para tener los repositorios más limpios.

¿Qué son?

A menudo sucede que mientras estamos desarrollando un proyecto, es necesario utilizar otro proyecto dentro del mismo. Puede ser una biblioteca de terceros o una solución que se está desarrollando separadamente que a la vez herede de otros. El problema nos surge cuando queremos tener dicho proyecto actualizado e integrado.

Aquí un ejemplo: supongamos que estás desarrollando una aplicación y la creación de un toolkit te ayuda para terminar tu desarrollo. Entonces decides tener proyectos separados. La aplicación se alimenta del toolkit, y decides que el toolkit sea de código abierto y lo publicas en Github. Este es un ejemplo perfecto para emplear los submódulos. Puedes tener tu toolkit en colaboración mientras tu App puede actualizarse simplemente con un pull.

¡Manos a la obra!

Añadiendo submódulos al proyecto

Para agregar un repositorio Git existente como un submódulo del repositorio que estamos trabajando, utilizamos git submodule add junto a la URL absoluta o relativa del proyecto.

git submodule add https://github.com/GeekyTheory/GeekyTheory.Toolkit.git

Por defecto, los submódulos agregarán el subproyecto con el mismo nombre que el repositorio, en este caso GeekyTheory.Toolkit. Nótese que se ha añadido .gitmodules como archivo, el cual almacena la correspondencia entre la URL del proyecto y el subdirectorio local. Si tiene varios submódulos, podrás tener varias entradas en ese archivo. Es importante tener este archivo con control de versiones, de la misma manera que el .gitignore, ya que si alguien hace un fork del proyecto, git sabrá con este archivo de dónde descargarse el submodule.

Clonando un proyecto con submódulos

Para clonar un proyecto con submódulos se introduce el siguiente comando:

git clone https://github.com/GeekyTheory/GeekyBlogs.git

Tenemos que tener en cuenta que esto solo trae los directorios sin los ficheros. Para poder recuperar los ficheros y actualizarlos, debemos hacer lo siguiente:

  • Para recuperar los ficheros:

git submodule init

  • Para actualizarlos:

git submodule update

También podemos ahorrarnos las dos últimas líneas con --recursive:

git clone --recursive https://github.com/GeekyTheory/GeekyBlogs.git

¡Y ya tenemos nuestro proyecto con submódulos listo para trabajar! En el siguiente tutorial veremos cómo trabajar con ellos para actualizarlo todo correctamente.

Hasta aquí este artículo. Si os ha gustado, no os lo quedéis para vosotros. ¡Compartid!

;)

Happy Coding!