MP08 - UF4: Git flow i les seves branques
Git flow i les seves branques
Per a treballar amb el git-flow cal tenir en compte que se sol treballar amb diverses branques sobre un sol projecte. Aquesta estratègia de ramificació utilitza dues branques principals (master o main i develop) i diverses branques de suport (feature, release, hotfix i support) que a diferència de les branques principals, aquestes últimes sempre tenen un temps de vida limitat, ja que seran eventualment eliminades. Cadascuna d'aquestes branques tenen les seves pròpies regles, que resumirem a continuació:
-
master o main: és una de les dues branques principals que perduren durant tot el cicle de vida del gestor de versions (mai no es destrueix) i conté les versions congelades dels nostres desenvolupaments llestos per ser pujats a l'ambient de producció. Sobre aquesta branca no s'han de realitzar commit, únicament es recomana realitzar merge des d'una de les branques de suport. La raó que existeix aquesta regla és perquè la branca master/main conté el programari que s'executa en producció i ha d'estar lliure d'errors, a més de ser aquesta la branca que utilitzem en programes d'integració contínua. Hem de recordar que cada vegada que incorporem codis a master/main, obtenim una nova versió congelada.
-
develop: és l'altra branca principal de model i tampoc no s'elimina, s'origina de la branca master/main i conté el codi que conformarà la següent versió planificada del nostre projecte. Sobre aquesta branca tampoc no s'han de fer commit de forma directa, només s'han de fer merge des d'una de les branques de suport. A develop es van resoldre els conflictes provocats pel desenvolupament del nostre projecte.
Una vegada s'han creat les branques main i develop que seran les principals, podrem anar afegint branques amb subbranques en els següents nivells.
- feature: és una de les branques de suport més importants i de més volatilitat. S'originen de la branca develop i s'utilitzen per desenvolupar noves característiques de l'aplicació que, un cop acabades, s'incorporen novament a la branca develop amb un merge o es descarten eliminant la branca. En general es tendeix que aquesta branca existeixi a les màquines dels desenvolupadors i no el repositori centralitzat (origin).
- release: aquesta branca de suport s'origina de la branca develop i s'utilitza per preparar el següent codi en producció fent les correccions menors d'última hora i els últims ajustaments a les metadades (modificar els fitxers CHANGELOG i/o VERSION) abans de passar el codi a la branca màster. Un cop acabats els canvis en aquesta branca les modificacions s'incorporen a les branques develop i master/main.
-
hotfix: és una altra branca de suport originada a partir de màster i s'utilitzen per corregir errors i bugs al codi de producció. La seva funció és semblant a les branques releases, sent la principal diferència que els hotfixes no es planifiquen. Conclosos els canvis en aquesta branca, s'han d'incorporar a les branques master/main i develop.
Hi pot haver una excepció a la regla, i és que, quan hi ha una branca de release en ús i encara no s'ha tancat, els canvis de la branca hotfix s'han de combinar a la branca de release oberta, en lloc de la branca develop. En fer això eventualment resultarà també en la fusió dels canvis a la branca develop quan es tanqui la branca de release.
- support: aquesta és la branca menys essencial de l'estratègia i per a molts clients encara es troba en una etapa inestable. S'originen a partir d'una etiqueta específica de la branca màster i són utilitzades per mantenir múltiples versions d'un projecte alhora. La idea principal és que tractarem aquest branch de la mateixa manera que tractem la branca de hotfix en què arreglarem el problema, però amb la diferència que després s'incorpora de nou al màster/main.
Imatges extretes de www.atlassian.com