3.3 KiB
3.3 KiB
Driessen Branching Model
Il Driessen branching model, noto come Git Flow, definisce una struttura di branch chiara, utile per team e rilasci.
Branch principali
-
master- Contiene il codice in produzione
- Ogni commit su
mastercorrisponde, idealmente, a una versione rilasciata
-
development- Branch di integrazione per lo sviluppo
- Qui confluiscono le feature completate
- Da
developmentpartono i rilasci
Branch di supporto
1. Feature branch
- Nome:
feature/<nome-breve> - Partono da:
development - Ritornano in:
development
Esempio:
git checkout development
git pull origin development
git checkout -b feature/nuovo-report
# ... sviluppo, commit, push ...
git push -u origin feature/nuovo-report
# alla fine, MR/PR verso development
Usi tipici: nuove funzionalità, modifiche non banali.
2. Release branch
- Nome:
release/<versione> - Partono da:
development - Ritornano in: prima
developmente poi dopomaster
Esempio:
git checkout development
git pull origin development
git checkout -b release/1.2.0
# bugfix minori, aggiornamento versioni, changelog, ecc.
git push -u origin release/1.2.0
Alla fine:
- Merge in
developmentper allineamento - Merge in
master(rilascio produzione) - Tag della versione (es.
v1.2.0)
3. Hotfix branch
- Nome:
hotfix/<descrizione-breve> - Partono da:
main - Ritornano in: prima
mastere poi dopodevelopment
Usati per bug urgenti in produzione. Visto che la branch development potrebbe già essere più avanti di master, in questo caso è necessario operare direttamente su quest'ultima, e poi portare i cambiamenti sul ramo dev.
Esempio:
git checkout master
git pull origin master
git checkout -b hotfix/fix-crash-login
# ... correggi bug, commit, test ...
git push -u origin hotfix/fix-crash-login
Alla chiusura:
- Merge in
master(nuova patch in produzione) - Tag (es.
v1.2.1) - Merge in
develop(per non perdere il fix)
Mini workflow Git Flow tipico a Meridiana
-
Nuova feature
git checkout development git pull origin development git checkout -b feature/nuova-funzionalita # sviluppo, commit, push... git push -u origin feature/nuova-funzionalita # apri MR verso development -
Preparazione release
git checkout development git pull origin development git checkout -b release/1.3.0 # sistemazione dettagli di rilascio git push -u origin release/1.3.0 # MR verso: **1. development**, **2. master** (o merge manuale) -
Hotfix urgente
git checkout master git pull origin master git checkout -b hotfix/fix-bug-critico # fix, commit, push git push -u origin hotfix/fix-bug-critico # MR verso: **1. master**, **2. development**
Note
masterdeve essere sempre stabile- Lo sviluppo ordinario avviene su
developmente sullefeature/* - I rilasci vengono preparati su
release/* - I bug urgenti in produzione usano
hotfix/*
Questo modello aiuta a:
- Separare chiaramente sviluppo, test e produzione
- Ridurre i conflitti su
master - Avere una storia più pulita per rilasci e hotfix