GitScrum / Docs

Git Hooks

Automatiza gestión de tareas con Git hooks. Auto-actualiza tareas en commits, inicia timers en checkout y valida nomenclatura de ramas.

Automatiza tu workflow con Git hooks. Actualiza estado de tareas en commits, inicia timers en checkout, valida nomenclatura de ramas—todo sin pensarlo.


Referencia Rápida

gitscrum hooks install           # Setup interactivo de hooks
gitscrum hooks list              # Mostrar hooks instalados
gitscrum hooks remove            # Eliminar hooks
gitscrum hooks test              # Probar ejecución de hook

Instalación

Setup Interactivo

gitscrum hooks install
? ¿Instalar hook commit-msg?
  Agrega ID de tarea a mensajes de commit
  ❯ Sí
    No

✓ Hooks instalados: commit-msg, post-checkout, pre-push
  Ubicación: .git/hooks/

Instalar Hooks Específicos

gitscrum hooks install commit-msg
gitscrum hooks install --all

Hooks Disponibles

commit-msg

Agrega automáticamente ID de tarea a mensajes de commit.

# Rama: feature/GS-123-auth-flow
$ git commit -m "agregar refresh de token OAuth"

# Mensaje se convierte en: [GS-123] agregar refresh de token OAuth

Configuración:

hooks:
  commit_msg:
    enabled: true
    format: "[{id}] "
    skip_if_present: true
    exclude_branches:
      - main
      - develop

post-checkout

Se ejecuta después de cambiar de rama.

hooks:
  post_checkout:
    enabled: true
    switch_timer: true    # Cambia timer a tarea de nueva rama
    show_task: true       # Muestra info de tarea
    auto_start: false     # Auto-iniciar timer

pre-push

Se ejecuta antes de push al remoto.

hooks:
  pre_push:
    enabled: true
    update_status: true   # Cambiar tarea a "En Progreso"
    stop_timer: false     # Parar timer en push

pre-commit

Validación antes de crear el commit.

hooks:
  pre_commit:
    enabled: true
    require_timer_running: false
    check_branch_naming: true

Gestionar Hooks

Listar Hooks Instalados

gitscrum hooks list
🔗 Hooks Instalados

Hook            │ Estado   │ Fuente
────────────────┼──────────┼────────────────
commit-msg      │ Activo   │ gitscrum
post-checkout   │ Activo   │ gitscrum
pre-commit      │ Activo   │ husky (externo)

Probar Hooks

gitscrum hooks test commit-msg --message "agregar feature"
Probando hook commit-msg...

Input:   "agregar feature"
Rama:    feature/GS-123-auth
Output:  "[GS-123] agregar feature"

✓ Hook se ejecutaría correctamente

Eliminar Hooks

gitscrum hooks remove commit-msg
gitscrum hooks remove --all

Deshabilitar Temporalmente

git commit --no-verify -m "fix de emergencia"

O con variable de entorno:

export GITSCRUM_HOOKS_DISABLED=1
git commit -m "saltar hooks"

Integración con Otras Herramientas

Con Husky

{
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged && gitscrum hooks run pre-commit",
      "commit-msg": "gitscrum hooks run commit-msg"
    }
  }
}

Con Lefthook

commit-msg:
  commands:
    gitscrum:
      run: gitscrum hooks run commit-msg {1}

Configuración por Proyecto

# .gitscrum.yml
hooks:
  commit_msg:
    enabled: true
    format: "{id}: "  # Formato diferente para este proyecto
    require_task_id: true

Mejores Prácticas

  1. Empieza mínimo. Instala solo los hooks que usarás.
  2. Prueba primero. Usa --dry-run y hooks test antes de comprometerte.
  3. Documenta para el equipo. Agrega setup de hooks al README.
  4. Usa config de proyecto. Pon ajustes de hooks en .gitscrum.yml para consistencia.