Git hooks

Git hooks : cómo automatizar procesos en Git

|

Tiempo de lectura: 3 minutos
Git hooks

Git es un sistema de control de versiones distribuido, que se ha convertido en el pilar fundamental para el desarrollo de software colaborativo. Pero, ¿qué hace que Git sea aún más poderoso y flexible? ¡Los Git Hooks!

Estos pequeños scripts personalizables permiten extender las funcionalidades de Git, ofreciendo la capacidad de ejecutar comandos automáticos en momentos clave del ciclo de vida del desarrollo.

Crear e instalar ganchos (hooks) en Git es un proceso relativamente sencillo, que te permite personalizar tu flujo de trabajo según tus necesidades específicas.

Recuerda que en este tutorial te enseñamos a crear un repositorio Git con WordPress.

Introducción: comprender los Ganchos de Git

Git incluye una serie de ganchos predefinidos que se ejecutan en momentos específicos del ciclo de vida del desarrollo, como pre-commit, post-commit o pre-push, entre otros. Estos scripts personalizables te permiten automatizar tareas y validar cambios antes de que se confirmen o se envíen al repositorio remoto.

Aquí tienes algunas acciones comunes que puedes realizar en diferentes ganchos:

  1. pre-commit:
    • Realizar verificaciones de estilo de código.
    • Ejecutar pruebas unitarias para garantizar la integridad del código.
    • Analizar el código en busca de posibles problemas.
  2. prepare-commit-msg:
    • Agregar automáticamente información al mensaje de confirmación, como el número de tarea o un prefijo específico.
  3. commit-msg:
    • Validar el formato del mensaje de confirmación.
    • Verificar que el mensaje contenga información esencial.
  4. post-commit:
    • Actualizar documentación automáticamente después de cada confirmación.
    • Notificar a los desarrolladores sobre la finalización de un commit.
  5. pre-receive:
    • Realizar verificaciones adicionales antes de aceptar un push en el repositorio remoto.
    • Validar reglas específicas de la rama o del proyecto.
  6. post-receive:
    • Actualizar el entorno de producción automáticamente después de recibir un push.
    • Notificar a los integrantes del equipo sobre cambios en la rama principal.
  7. pre-push:
    • Realizar verificaciones finales antes de permitir un push en el repositorio remoto.
    • Ejecutar pruebas más exhaustivas antes de enviar cambios.
  8. update:
    • Controlar los cambios que se están realizando en el repositorio remoto antes de aceptarlos.
    • Aplicar políticas específicas para las actualizaciones de las ramas.

Estos son solo algunos ejemplos, sus posibilidades son casi ilimitadas. Puedes utilizar los hooks para adaptar Git a las necesidades específicas de tu equipo y proyecto.

Sin embargo, es importante usar ganchos con prudencia, ya que ejecutan automáticamente scripts y podrían afectar el rendimiento y la estabilidad si no se manejan adecuadamente.

Cómo crear un Gancho Personalizado

  1. Ubicación de los Ganchos: todos los ganchos de Git están almacenados en la carpeta .git/hooks de tu repositorio.
  2. Plantilla de Gancho: puedes encontrar plantillas de ganchos en la misma carpeta con la extensión .sample. Copia el gancho que deseas usar y elimina la extensión .sample.
  3. Crear un Nuevo Script: crea un nuevo archivo con el nombre del gancho que estás configurando (por ejemplo, pre-commit), sin extensión.
  4. Agregar Código Personalizado: edita el archivo y agrega el código específico que deseas ejecutar en ese punto del ciclo de vida del desarrollo.

Dar Permisos de Ejecución

Asegúrate de que tu script sea ejecutable. Puedes hacerlo con el siguiente comando en la terminal:

chmod +x .git/hooks/nombre-del-gancho

Personalizar el Git Hook

Edita el script recién creado para incluir la lógica que necesitas. Por ejemplo, en un gancho pre-commit, podrías agregar comprobaciones de estilo de código, pruebas unitarias o cualquier otra validación que desees realizar antes de confirmar cambios.

Probar los Git Hooks

Realiza una operación que active el gancho para asegurarte de que se ejecute correctamente. Por ejemplo, intenta hacer un commit para probar un gancho pre-commit.

Instalar Git Hooks en otros repositorios

Si deseas compartir los ganchos con otros colaboradores del proyecto, puedes almacenar los scripts en un directorio compartido y pedir a los demás que los instalen manualmente. También puedes utilizar herramientas como git-hooks para gestionar ganchos de manera más centralizada.

Ejemplo de Git Hook para comprobar código PHP

Vamos allá con un ejemplo: un gancho pre-commit que realiza comprobaciones de estilo del código. Este ejemplo utiliza una herramienta de verificación de estilo como phpcs (PHP CodeSniffer).

  1. Primero, asegúrate de tener phpcs instalado en tu entorno. Puedes instalarlo con Composer:

composer require squizlabs/php_codesniffer

  1. Crea un archivo llamado pre-commit (sin extensión) en la carpeta .git/hooks de tu repositorio y agrega el siguiente contenido:

#!/bin/bash # Este script se ejecutará antes de cada commit

echo "Ejecutando comprobaciones de estilo con phpcs..."

# Obtén la lista de archivos modificados en el commit actual files=$(git diff --cached --name-only --diff-filter=ACM | grep -E '\.php$')

# Si no hay archivos PHP modificados, salta las comprobaciones de estilo

if [ -z "$files" ]; then echo "No hay archivos PHP modificados. Comprobaciones de estilo omitidas." exit 0 fi # Ejecuta phpcs en los archivos modificados phpcs --standard=PSR2 $files

# Captura el código de salida de phpcs exit_code=$?

# Si phpcs encuentra problemas, impide que se realice el commit if [ $exit_code -ne 0 ]; then echo "Comprobaciones de estilo fallidas. Corrige los problemas antes de confirmar." exit 1 fi # Si todo está bien, permite que se realice el commit echo "Comprobaciones de estilo exitosas. ¡Puedes confirmar!" exit 0

  1. Dale permisos de ejecución al script:

chmod +x .git/hooks/pre-commit

Ahora, este gancho pre-commit ejecutará phpcs en los archivos PHP modificados antes de cada commit y evitará que se realice el commit si encuentra problemas de estilo.

Siguiendo estos pasos, podrás crear, instalar y gestionar ganchos personalizados en tu repositorio Git. Recuerda que la personalización de ganchos puede mejorar significativamente tu flujo de trabajo y ayudarte a mantener la calidad y consistencia en tu código.


Avatar de Edi Vieito

Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Newsletter

Suscríbete y recibe periódicamente consejos muy útiles para tu web y ecommerce 🙂 Además, te regalamos
3 guías
: Digitalización, WordPress y Ciberseguridad.

Conviértete en afiliado

Gana dinero recomendando dinahosting a todo el mundo.