modulo 06 / lezione 26
Workflow di team
Trunk-based development
Capire perché molti team puntano su un solo branch lungo (main) e branch corti.
Trunk-based development
Trunk-based development significa che il branch principale, di solito main, è il centro vivo del progetto. I branch laterali esistono, ma restano corti. Il lavoro viene integrato spesso e il branch principale deve rimanere sempre in uno stato rilasciabile.
Non è “tutti pushano a caso su main”. È un workflow disciplinato basato su integrazione continua, test rapidi, branch piccoli e feature flag.
Perché questa lezione conta
Più tardi integri, più costoso diventa integrare. Branch lunghi accumulano conflitti, assunzioni vecchie e sorprese. Trunk-based riduce questo debito forzando il team a spezzare il lavoro in cambiamenti piccoli.
È particolarmente adatto a prodotti web, SaaS e team che rilasciano spesso.
Obiettivo operativo
Alla fine della lezione devi saper valutare se trunk-based è adatto al tuo team e quali prerequisiti servono per non trasformarlo in caos.
Principi
mainè sempre verde;- branch di lavoro brevi;
- CI obbligatoria;
- feature grandi spezzate;
- feature flag per codice non pronto;
- rollback o revert rapidi;
- review leggera ma frequente.
Il punto centrale è ridurre la dimensione dell’integrazione.
Cosa misurare
Per capire se stai davvero lavorando in trunk-based, misura pochi indicatori:
età media dei branch
dimensione media PR
tempo tra apertura e merge
tempo di feedback CI
numero di revert su main
Se i branch durano dieci giorni e le PR arrivano a migliaia di righe, il workflow è trunk-based solo nel nome.
Feature flag
Senza feature flag, trunk-based spinge a tenere branch aperti finché la feature non è completa. Con feature flag puoi mergiare codice non visibile:
Codice presente in main
Feature disattivata per utenti
Attivazione graduale via configurazione
Questo separa merge da rilascio. È una differenza fondamentale.
Branch corti
Esempio di ciclo:
git switch main
git pull --ff-only
git switch -c fix/login-timeout
# modifica piccola
git add -p
git commit -m "fix(auth): gestisci timeout login"
git push -u origin fix/login-timeout
# PR, CI, review, merge
Il branch vive ore o pochi giorni, non settimane.
Prerequisiti
Trunk-based funziona se hai:
- test automatici affidabili;
- build rapida;
- branch protection;
- deploy reversibile;
- feature flag o toggles;
- cultura di PR piccole.
Senza questi, trunk-based può diventare “main rotto spesso”.
Quando non basta
Può non essere ideale se:
- devi supportare più versioni rilasciate;
- hai release fisiche o regolamentate;
- la CI è lenta e fragile;
- il team non sa spezzare lavoro grande;
- non esistono feature flag.
In questi casi, un workflow con release branch può essere più realistico.
Laboratorio guidato
Analizza il tuo progetto:
- tempo medio di vita dei branch;
- tempo medio review PR;
- frequenza merge su main;
- tempo CI;
- possibilità di feature flag;
- frequenza release.
Poi scegli una regola sperimentale per una settimana:
Nessun branch feature oltre 2 giorni.
PR sotto 300 righe di diff quando possibile.
Main sempre verde.
Output atteso
Una decisione documentata:
Adottiamo trunk-based / non lo adottiamo ancora.
Prerequisiti mancanti:
Regole branch:
Regole CI:
Regole feature flag:
Errori comuni
Confondere trunk-based con assenza di review. Puoi avere PR piccole e veloci.
Mergiare codice non testato. Main deve restare rilasciabile.
Branch corti solo a parole. Serve misurare età dei branch.
Feature flag senza pulizia. I flag vecchi diventano debito.
Checklist di verifica
- main è protetto e verde;
- i branch sono brevi;
- le feature incomplete possono restare spente;
- CI è abbastanza rapida;
- il team sa fare rollback o revert.
Collegamenti
- Modulo: Workflow di team — lezione 26 del corso.
- Confronta con GitHub Flow e GitFlow nelle prossime lezioni.