Un'ultima doverosa sezione sul Git workflow noto come “GitFlow”.
Come abbiamo detto all’inizio di questa sezione e di questa guida, Git in sé non è prescrittivo sull’uso di determinate funzioni, ma lascia allo sviluppatore web e al team trovare il flusso più adatto alle sue esigenze.
GitFlow è stato, forse, il primo workflow proposto alla community degli sviluppatori che ha avuto un effetto dirompente, perché ha mostrato come sfruttare un tool già usato per altre esigenze – Git, per l’appunto – per coordinare e ottimizzare anche le attività legate al rilascio. Tutto ciò avveniva nel 2010; nel frattempo, sono sorti e si sono affermati altri tool e altre tipologie di software per le quali il modello GitFlow è ben poco pratico.
GitFlow identifica e suggerisce l’uso di diversi branch e tipi di branch nel proprio progetto:
- un branch principale che memorizza la history dei rilasci ufficiali (main)
- un branch di integrazione delle feature (develop)
- dei feature branch, che nascono e fanno merge sul branch di integrazione, riconoscibili perché il nome inizia per feature
- dei branch di release, che nascono dal branch di integrazione, sui quali eventualmente possono essere fatti dei fix e che una volta effettuata la release vengono mergiati sia sul branch principale che sul branch di integrazione; il nome di questi branch inizia per release e contiene la versione della versione che si sta rilasciando
- dei branch di hotfix, che nascono dal branch principale, contengono singoli fix importanti per versioni già rilasciate, e che vengono poi mergiati sia sul branch principale che su quello di integrazione; il nome di questi branch inizia per hotfix
GitFlow Workflow
GitFlow è un flusso di lavoro ottimo per quei progetti software basati su rilasci di versioni e offre un canale dedicato per il rilascio di hotfix. D’altro canto, richiede molto impegno nella corretta gestione del name e utilizzo dei branch. Non a caso, dall’idea originale sono, poi, nate alcune estensioni per Git che offrono comandi dedicati per attuare i vari step di questo flusso.
D’altro canto, c’è anche da considerare che GitFlow, per certi versi, si limita a fare in modo che la history e i commit del proprio repository siano “in linea” con i rilasci e le varie versioni. Non entra, quindi, nel merito nelle modalità con cui poi, rilasciare e distribuire un hotfix, ma permette solo di implementare e individuare in modo preciso il commit che corrisponde a una determinata versione.
Consigliamo, comunque, di valutare bene tutte le implicazioni nell’uso di GitFlow prima di sceglierlo come modello risolutivo. Rimandiamo quindi al post originale dell’autore, Vincent Driessen, per maggiori approfondimenti e per la sua nota di review sull’uso di GitFlow a 10 anni dalla sua pubblicazione.