Autonomía digital y tecnológica

Código e ideas para una internet distribuida

Usando submodules en git

Imago voragine.net

Los submodules de git permiten incluir un repositorio en otro en cualquier ubicación. Incluir por ejemplo una librería de javascript en un proyecto web como un módulo permite funcionar con su última versión fácilmente, sin necesidad de preocuparse por sustituir versiones manualmente: basta actualizar el repositorio.

Yo he usado los módulos de git por primera vez para hacer una web con Hugo. En el repositorio del sitio web he incluido el theme Learn de Hugo como módulo.

Añadir un módulo a un repositorio

Dos parámetros para añadir un módulo a un repositorio:

  • La URL del repositorio que se quiere añadir. En el ejemplo https://github.com/matcornic/hugo-theme-learn.
  • La ubicación en el repositorio principal donde se quiere incluir y tener disponible el módulo. El el ejemplo themes/learn.

Al añadir el primer módulo se crea en el repositorio principal el archivo .gitmodules, en el que se listan todos los módulos que se han añadido.

Añadir un módulo es un cambio como cualquier otro y hay que hacer commit y subirlo al repositorio remoto de la manera habitual.

Clonando un repositorio con submodules

Cuando se clona un repositorio con submodules, las ubicaciones que contienen los módulos aparecerán vacías. Para poder usar los repositorios de los módulos primero hay que activarlos y descargar su contenido:

Eliminar un módulo

No existe un comando de git para eliminar un módulo. Se puede eliminar un módulo de un repositorio de la siguiente manera:

  1. Eliminar la información sobre el módulo en el archivo .gitmodules.
  2. Eliminar la información sobre el módulo en el archivo .git/config.
  3. Eliminar la ubicación asociada al módulo. En el ejemplo git rm --cached themes/learn.

Actualizar un módulo

Añadir un repositorio como módulo a otro se está añadiendo su última versión. Si después de añadirlo hay algún cambio en el repositorio incluido como módulo no se reflejará en nuestro repositorio. Para actualizar el módulo a su última versión hay que situarse en la ubicación asociada al módulo y comprobar en qué rama está el submodule. Si no tiene rama asociada la asociamos y por último descargamos la última versión con git pull:

Luego solo queda añadir los cambios a stage, declararlos con un commit y subirlos al repositorio remoto.

Esta pequeña guía está muy inspirada en la que publicó Chris Jean en su blog: Git Submodules: Adding, Using, Removing, Updating.

No hay comentarios

Dejar un comentario

*
*

 

Un trackback