git hooks

Cómo usar Git Hooks

A lo largo de este artículo, veremos que son los Git Hooks y como utilizarlos.

Al momento de desarrollar una aplicación que tenga una buena calidad, el proceso se convierte es uno bastante complejo. Para hacerlo, se emplean herramientas que complementan el proceso de codificación. Como por ejemplo la automatización. Esto es por la necesidad de que los administradores de sistemas y desarrolladores disminuyan el tiempo de implementación. Por eso, Git es una de las herramientas hechas para este propósito en particular. A través de este tutorial, te enseñaremos como utilizar los Git Hooks para maximizar tu proyecto VPS.

git hooks
Cómo usar Git Hooks

¿Qué es Git?

Antes de adentrarnos en Git Hooks, te explicaremos que es Git.

Es un software de control de versiones de código abierto. Este sirve para monitorear el desarrollo del software detalladamente.

Esta aplicación es muy popular entre desarrolladores, es empleada mayormente en los proyectos de código abierto.

¿Qué son los Git Hooks?

Con Git, puedes crear ramas de desarrollo, tener control absoluto sobre las versiones y registrar cambios. Aun así, se puede automatizar este proceso. La automatización de Git funciona en cuanto a programas y deployment. Para esto existen los Hooks.

Los Hooks de Git son scripts de shell que se efectúan automáticamente al ejecutar un comando importante, como por ejemplo Commit o Push. Si deseas que un Hook funcione, se necesita otorgar al sistema Unix los permisos de ejecución. Con el uso de estos scripts puedes automatizar varias cosas.

Al iniciar un repositorio local, Git incluye ejemplos de Git Hooks. Es necesario señalar que sitios como Gitlab o Github prohíben su empleo en primera instancia. Por esa razón es que se usan principalmente en instancias locales y privadas.

Cómo usar los Git Hooks

En cada proyecto clonado o repositorio local que fue recién originado, los Hooks se almacenan en la carpeta .git/hooks/. En estos encontraremos una cantidad de Hooks de ejemplo, que sirven para tomarlos de punto de partida.

Para activarlo, lo único que necesitamos es generar un archivo y guardarlo en la carpeta .git/hooks/. Aun así, el nombre del archivo viene predefinidamente como Git. Algunos de los hooks que se pueden utilizar son:

Git HookComando GitDescripción
applypatch-msg.samplegit amCuando se modifica un mensaje de patch
commit-msg.samplegit commitConfigura el mensaje de una acción de aprobación
fsmonitor-watchman.samplelaunch watchmanPara incluir watchman
post-update.samplegit pushActualiza todos los datos luego del push
pre-applypatch.samplegit amAntes de aplicar el patch
pre-commit.samplegit commitAntes de ejecutar commit

Como se visualiza anteriormente, cada uno de los hooks está asociado a un comando Git. Así podremos saber cuando es conveniente emplearlos.

Ejemplos de cómo usar los Git Hooks

El uso de ellos es muy variado, lo que más necesitas son conocimientos de Bash, además de otros lenguajes como Python o Ruby, esto si quieres sacarle todo su potencial. Aquí te dejamos ciertos ejemplos de su uso:

Mostrar información sobre una acción commit

Con este ejemplo te mostramos una acción commit. Genera un archivo llamado prepare-commit-msg dentro de la carpeta .git/hooks/. Una vez hecho, escribe lo siguiente:

#!/bin/sh

SOB=$(git config github.user)
grep -qs "^$SOB" "$1" || echo ". Cambio por @$SOB" >> "$1"

Ahora, guárdalo. Y determina los permisos de ejecución para este archivo.

:~$ chmod +x prepare-commit-msg

Con este sencillo hook, cuando realices una acción commit, recibirás información que sea relevante instantáneamente.

Generar documentación a medida que se cargan los cambios

Este pre-push te permite crear la documentación de tu código si tienes un generador. Con este Hook cada vez que generes un cambio, la documentación lo cargará automáticamente.

Genera un pre-push en la carpeta anterior y agrega el script:

#!/bin/bash

doxygen Doxyfile
git add docs/
git commit -m "Update documentation ($(date +%F@%R))"

Debes guardar el archivo y luego establecer el permiso de ejecución.

:~$ chmod +x pre-push

Buscar y corregir espacios en blanco en commits

Este Git Hook tipo pre-commite en particular en muy sencillo de ejecutar. Debes crear un archivo llamado pre-commit y agregar lo próximo:

 #!/bin/bash -l
.git/hooks/pre-commit-master-no-no
if [[ $? == 1 ]]
then
exit 1
fi

.git/hooks/pre-commit-debugger
.git/hooks/pre-commit-trailing-spaces
.git/hooks/pre-commit-images
.git/hooks/pre-commit-pair

Luego de ejecutarlo, se encontrarán todos los espacios en blanco y se corregirán.

Conclusión

En este artículo, hemos visto el concepto fundamental para automatizar procesos con Git Hooks. Git es una herramienta imprescindible para los desarrolladores de hoy en día. ¡Con Hooks puedes mejorarla aún más!

Si no posees conocimientos básicos sobre lenguajes de programación, como por ejemplo bash, hacer un script para Git Hooks puede resultarte bastante complicado.

En este artículo has aprendido lo suficiente como para dar tus primeros pasos con Git Hooks. ¡Te recomendamos continuar con el proceso de aprendizaje!

Emanuel Duarte
Emanuel Duarte

Emanuel Duarte es un apasionado de las tecnologías y el uso de ellas para el armado de desarrollo web, cuya especialización es la principal plataforma del mercado: Wordpress.
Adicionalmente, se destaca por conocer las herramientas aledañas que convierten los sitios webs en confiables, seguros y ágiles.