Skip to content

Hooks

¡Claro! Los archivos que se muestran en la carpeta .git/hooks son scripts especiales que forman parte del sistema de Git Hooks. Estos archivos permiten automatizar tareas en tu flujo de trabajo, ejecutándose en momentos clave del ciclo de vida de Git.

Vamos a desglosarlos:


1. applypatch-msg.sample

  • Cuándo se ejecuta: Al aplicar un parche con git am.
  • Uso: Permite verificar o modificar el mensaje del commit incluido en el parche.

2. commit-msg.sample

  • Cuándo se ejecuta: Justo después de que escribes un mensaje de commit.
  • Uso: Se utiliza para validar o modificar el mensaje del commit.
  • Ejemplo común: Forzar un formato específico del mensaje, como incluir un ID de ticket.

3. fsmonitor-watchman.sample

  • Uso: Integra Watchman, una herramienta de Facebook, para optimizar el rendimiento al monitorear cambios en archivos.
  • Beneficio: Hace más rápido el proceso de indexación en repositorios grandes.

4. post-update.sample

  • Cuándo se ejecuta: Después de actualizar el repositorio remoto.
  • Uso: Se puede utilizar para tareas como actualizar un repositorio bare o enviar notificaciones.

5. pre-applypatch.sample

  • Cuándo se ejecuta: Antes de aplicar un parche con git am.
  • Uso: Verificar algo antes de aplicar un parche, como asegurarse de que el código sea limpio.

6. pre-commit.sample

  • Cuándo se ejecuta: Antes de hacer un commit.
  • Uso: Permite realizar verificaciones automáticas, como:
    • Ejecución de linters (verificar estilo de código).
    • Prevenir commits si hay errores.
  • Ejemplo común: Bloquear el commit si hay errores en un archivo de configuración.

7. pre-merge-commit.sample

  • Cuándo se ejecuta: Antes de realizar un merge commit.
  • Uso: Verificar el estado del código o realizar validaciones previas.

8. pre-push.sample

  • Cuándo se ejecuta: Antes de hacer un git push al servidor remoto.
  • Uso: Verificar condiciones antes de subir el código, como:
    • Ejecutar pruebas automatizadas.
    • Asegurarse de no subir código incompleto.

9. pre-rebase.sample

  • Cuándo se ejecuta: Antes de iniciar un git rebase.
  • Uso: Evitar problemas durante un rebase o realizar acciones previas.

10. pre-receive.sample

  • Cuándo se ejecuta: En el servidor, antes de aceptar un push.
  • Uso: Validar las actualizaciones antes de aceptarlas.

11. prepare-commit-msg.sample

  • Cuándo se ejecuta: Antes de que Git abra el editor para el mensaje de commit.
  • Uso: Modificar el mensaje inicial, como agregar un encabezado predefinido.

12. push-to-checkout.sample

  • Cuándo se ejecuta: En un repositorio remoto, al hacer un push a un branch específico.
  • Uso: Actualizar la copia de trabajo automáticamente.

13. sendemail-validate.sample

  • Cuándo se ejecuta: Al usar git send-email.
  • Uso: Validar el formato del correo electrónico antes de enviarlo.

14. update.sample

  • Cuándo se ejecuta: En el servidor remoto, antes de aceptar actualizaciones.
  • Uso: Permitir o denegar cambios específicos basados en políticas.

Cómo usar estos archivos

  1. Eliminar .sample: Para activar un hook, renombra el archivo eliminando la extensión .sample.
    Ejemplo:

    mv pre-commit.sample pre-commit
    
  2. Hacerlo ejecutable: Los hooks deben tener permisos de ejecución:

    chmod +x pre-commit
    
  3. Agregar lógica: Inserta scripts personalizados dentro de cada archivo.


Ejemplo básico (pre-commit)

Aquí un ejemplo de pre-commit que previene commits si hay errores de sintaxis en archivos JavaScript:

#!/bin/bash
echo "Ejecutando pre-commit..."
if ! npx eslint . ; then
  echo "Errores de lint encontrados. Cancela el commit."
  exit 1
fi

Resumen

Estos Git Hooks son herramientas poderosas para automatizar tareas y mejorar la calidad del código en tus proyectos. Puedes personalizarlos con scripts en Bash, Python, u otros lenguajes. 🚀