Una strategia di branching consistente facilita la collaborazione, riduce i conflitti di merge e supporta rilasci frequenti. I team DOVREBBERO (SHOULD) seguire un modello di branching semplice e prevedibile.
I team DOVREBBERO (SHOULD) seguire un modello di branching in stile GitHub Flow:
main (o master) è l’unico branch a lunga durata e rappresenta sempre codice deployablemainmainmain in produzioneI branch di feature DEVONO (MUST) essere a breve durata:
Branch a lunga durata portano a:
I nomi dei branch DOVREBBERO (SHOULD) utilizzare un prefisso per indicare lo scopo:
| Prefisso | Scopo | Esempio |
|---|---|---|
feature/ |
Modifiche funzionali | feature/user-authentication |
bugfix/ |
Correzione di difetti | bugfix/login-error-handling |
spike/ |
Lavoro sperimentale (non merged) | spike/graphql-evaluation |
hotfix/ |
Correzioni urgenti per la produzione | hotfix/security-patch |
Trunk-Based Development: Simile a GitHub Flow ma con commit ancora più frequenti direttamente su main (con feature flag per funzionalità incomplete)
GitFlow: Modello più complesso con branch multipli a lunga durata (main, develop, release/*, hotfix/*). Raccomandato solo per progetti con cicli di release molto strutturati.
| Stato | Criteri |
|---|---|
| 🟢 VERDE | Branch short-lived, naming chiaro e consistente, strategia documentata |
| 🟡 AMBRA | Pratiche miste, alcuni branch a lunga durata, naming inconsistente |
| 🔴 ROSSO | Branch a lunga durata o non gestiti, nessuna strategia definita |