Nel mondo dello sviluppo software, mantenere una cronologia dei commit pulita e navigabile non è solo una questione di ordine ma un pilastro del lavoro di squadra efficiente e della gestione dei progetti. I messaggi di commit fungono da diario di bordo, fornendo approfondimenti sul perché e sul cosa di ogni modifica. Questa importanza cresce nei progetti multi-sviluppatore dove tracciare i cambiamenti e comprendere il loro scopo può diventare complesso.

Questa guida introduce i Git hook come soluzione per applicare standard di commit message, come SemVer e Conventional Commits, su vari sistemi operativi. Esploreremo come implementare questi controlli su Mac, Linux e Windows, garantendo che i contributi del tuo team siano coerenti, indipendentemente dall'ambiente di sviluppo.

Cosa Sono i Git Hook?

I Git hook sono script che vengono eseguiti automaticamente prima o dopo eventi nel ciclo di vita di Git, come le operazioni di commit, push e merge. Sono uno strumento potente per automatizzare e applicare regole e flussi di lavoro di progetto, senza la necessità di supervisione manuale.

Configurare il Tuo Ambiente

L'implementazione dei Git hook comporta la creazione di script che vengono attivati in fasi specifiche del flusso di lavoro Git. Questi script possono essere scritti in vari linguaggi di scripting, ma per semplicità e compatibilità cross-platform, ci concentreremo sugli script shell per Linux e Mac, e sugli script batch o PowerShell per Windows.

Per Linux e Mac:

  1. Trova la Directory Hooks: Naviga in .git/hooks nel tuo repository. Questa directory contiene script di esempio che possono essere modificati o sostituiti.
  2. Crea un Hook commit-msg: Questo hook ti permette di ispezionare il messaggio di commit prima che venga finalizzato. Rinomina commit-msg.sample in commit-msg e modificalo per includere i tuoi controlli.

Per Windows:

Gli utenti Windows possono utilizzare Git Bash o Windows Subsystem for Linux (WSL) per eseguire script shell, rendendo il processo simile a quello su Linux e Mac. In alternativa, si possono usare script PowerShell ma richiedono un approccio di configurazione diverso.

Applicare Standard di Commit Message

La Regola del Commit Message:

  1. SemVer e Conventional Commits: I messaggi di commit dovrebbero iniziare con un tipo (feat, fix, ecc.), opzionalmente seguito da un ambito, e una descrizione succinta della modifica. Ad esempio, feat(database): Add user authentication mechanism.
  2. Conteggio Minimo di Parole: I messaggi di commit devono contenere almeno 10 parole per garantire chiarezza descrittiva.

Implementare l'Hook:

#!/bin/sh
message=$(cat $1)
word_count=$(echo $message | wc -w)

if ! echo “$message” | grep -qE “^(feat|fix|docs|style|refactor|perf|test|chore)((\S+))?: .{10,}$”; then echo “Il messaggio di commit non segue gli standard Conventional Commits.” exit 1 fi

if [ “$word_count” -lt 10 ]; then echo “Il messaggio di commit deve contenere almeno 10 parole.” exit 1 fi

Distribuzione e Manutenzione

Distribuire e mantenere questi hook in un team può essere impegnativo. È cruciale assicurarsi che ogni membro del team installi gli hook necessari. Questo può essere ottenuto attraverso:

  • Documentazione: Documenta chiaramente il processo di configurazione nel README del tuo progetto.
  • Automazione: Usa script per automatizzare il processo di configurazione per i nuovi sviluppatori.
  • Controllo Versione: Conserva gli hook in un repository dedicato o all'interno del tuo progetto (fuori da .git) e scrivi uno script per creare symlink o copiarli nella directory .git/hooks.

Conclusione

Implementare i Git hook per applicare standard di commit message è una strategia potente per mantenere una codebase di alta qualità e una collaborazione efficiente del team. Seguendo i passaggi descritti in questa guida, puoi configurare un sistema che funziona su diversi sistemi operativi, garantendo coerenza e chiarezza nella cronologia dei commit del tuo progetto.