Introducció

Git hooks són scripts que Git executa automàticament abans o després de certs esdeveniments, com ara commits, fusions i rebases. Aquests scripts permeten automatitzar tasques i personalitzar el comportament de Git segons les necessitats del teu projecte.

Tipus de Git Hooks

Hi ha dos tipus principals de Git hooks:

  1. Client-side hooks: S'executen en operacions locals com commits i merges.
  2. Server-side hooks: S'executen en operacions del servidor com rebre commits push.

Client-side Hooks

  • pre-commit: S'executa abans de crear un commit. Pot ser utilitzat per verificar el codi o executar tests.
  • prepare-commit-msg: S'executa abans que l'editor de missatges de commit s'obri. Pot ser utilitzat per modificar el missatge de commit predeterminat.
  • commit-msg: S'executa després que l'editor de missatges de commit es tanqui. Pot ser utilitzat per validar el missatge de commit.
  • post-commit: S'executa després de crear un commit. Pot ser utilitzat per enviar notificacions o actualitzar informació.

Server-side Hooks

  • pre-receive: S'executa abans d'acceptar un push. Pot ser utilitzat per validar els canvis.
  • update: S'executa després de pre-receive i abans de canviar cap referència. Pot ser utilitzat per validar referències específiques.
  • post-receive: S'executa després d'acceptar un push. Pot ser utilitzat per desplegar codi o enviar notificacions.

Configurant Git Hooks

Els hooks es troben en el directori .git/hooks del teu repositori. Per configurar un hook, simplement crea un fitxer executable en aquest directori amb el nom del hook que vols utilitzar.

Exemple: pre-commit Hook

A continuació, es mostra un exemple de com configurar un hook pre-commit que verifica si el codi compleix amb l'estil de codificació PEP8 (per a Python).

  1. Crea el fitxer del hook:

    touch .git/hooks/pre-commit
    
  2. Fes el fitxer executable:

    chmod +x .git/hooks/pre-commit
    
  3. Edita el fitxer del hook:

    #! /bin/bash
    # pre-commit hook per verificar l'estil de codificació PEP8
    
    # Verifica tots els fitxers Python
    for file in $(git diff --cached --name-only | grep '\.py$'); do
        if ! pep8 $file; then
            echo "Error: L'estil de codificació PEP8 no es compleix en $file"
            exit 1
        fi
    done
    

Aquest script s'executarà abans de cada commit i verificarà que tots els fitxers Python compleixin amb l'estil de codificació PEP8. Si algun fitxer no compleix, el commit es cancel·larà i es mostrarà un missatge d'error.

Exercici Pràctic

Objectiu

Configura un hook commit-msg que verifiqui que tots els missatges de commit continguin almenys 10 caràcters.

Passos

  1. Crea el fitxer del hook:

    touch .git/hooks/commit-msg
    
  2. Fes el fitxer executable:

    chmod +x .git/hooks/commit-msg
    
  3. Edita el fitxer del hook:

    #! /bin/bash
    # commit-msg hook per verificar la longitud del missatge de commit
    
    commit_msg_file=$1
    commit_msg=$(cat $commit_msg_file)
    
    if [ ${#commit_msg} -lt 10 ]; then
        echo "Error: El missatge de commit ha de contenir almenys 10 caràcters."
        exit 1
    fi
    

Solució

Aquest script s'executarà després que l'editor de missatges de commit es tanqui i verificarà que el missatge de commit contingui almenys 10 caràcters. Si no és així, el commit es cancel·larà i es mostrarà un missatge d'error.

Resum

Els Git hooks són una eina poderosa per automatitzar tasques i personalitzar el comportament de Git. En aquest tema, hem après sobre els diferents tipus de hooks, com configurar-los i hem vist exemples pràctics de com utilitzar-los. Amb aquesta informació, pots començar a crear els teus propis hooks per millorar el teu flux de treball amb Git.

Dominar Git: De Principiant a Avançat

Mòdul 1: Introducció a Git

Mòdul 2: Operacions Bàsiques de Git

Mòdul 3: Branques i Fusió

Mòdul 4: Treballant amb Repositoris Remots

Mòdul 5: Operacions Avançades de Git

Mòdul 6: Eines i Tècniques de Git

Mòdul 7: Estratègies de Col·laboració i Flux de Treball

Mòdul 8: Millors Pràctiques i Consells de Git

Mòdul 9: Resolució de Problemes i Depuració

Mòdul 10: Git en el Món Real

© Copyright 2024. Tots els drets reservats