Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Un modello di branching per Git chefunziona – 30/04/2013Git FlowPUG Marche
1Contenuti••••Flusso completoBranch principaliBranch di supportoEsperienze, strumenti e riferimenti
2Il modello di git-flowE’ una strategia di branching e releasemanagementIdoneo per sviluppo concorrente di piùfeatureSuppo...
Flusso di sviluppo e di hot fix3Feature br. Develop Release br. MasterMaster Hot fixMasterDevelopSviluppoHot fix in produz...
Pair programming e team per funzionalità4
Sintesi dei branch5Master: produzioneDevelop: integrazioneHotfixes: applicazione di bug fix inproduzioneRelease: release c...
6Contenuti••••Flusso completoBranch principaliBranch di supportoEsperienze, strumenti e riferimenti
I branch principali: master e develop7• origin e master non vengono maieliminati: esistono in qualsiasi momentodel progett...
8Contenuti••••Flusso completoBranch principaliBranch di supportoEsperienze, strumenti e riferimenti
Branch delle feature9Utilizzato per sviluppi a breve o lungotermine.Ci possono essere più feature branch inparallelo.Il br...
Branch delle feature: comandi10Creare un nuovo branch per una feature:$ git checkout -b myfeature developSwitched to a new...
Branch delle release11Supportano la preparazione del codice per ilrilascio in produzioneA questo punto, tutte le feature c...
Branch delle release: comandi12Creare un nuovo branch per una release:$ git checkout -b release-1.2 developSwitched to a n...
Branch degli hot fix13Serve per correggere bug fix critici inproduzione senza attendere che il ramodevelop sia pronto per ...
Branch degli hot fix: comandi14Creare un nuovo hot fix per effettuare il bug fixing:$ git checkout -b hotfix-1.2.1 masterS...
15Contenuti••••Flusso completoBranch principaliBranch di supportoEsperienze, strumenti e riferimenti
Estensione git per operazioni git-flow ad alto livellohttps://github.com/nvie/gitflow16Esempi:git flow featuregit flow fea...
Supporto git-flow di Source Tree (frontend per Mac e Windows)http://blog.sourcetreeapp.com/2012/08/01/smart-branching-with...
RiferimentiArticolo originale: http://nvie.com/posts/a-successful-git-branching-model/Git-flow con rebase: http://ctoinsig...
Upcoming SlideShare
Loading in …5
×

Git Flow - Un modello di branching che funziona

4,384 views

Published on

Published in: Technology
  • Be the first to comment

Git Flow - Un modello di branching che funziona

  1. 1. Un modello di branching per Git chefunziona – 30/04/2013Git FlowPUG Marche
  2. 2. 1Contenuti••••Flusso completoBranch principaliBranch di supportoEsperienze, strumenti e riferimenti
  3. 3. 2Il modello di git-flowE’ una strategia di branching e releasemanagementIdoneo per sviluppo concorrente di piùfeatureSupporta lo sviluppo in pair programmingIdoneo per la continuous integrationE’ ottimo per il continuous deployment econsente di applicare velocemente bug fix(“hot fix”)Caratteristiche e benefici
  4. 4. Flusso di sviluppo e di hot fix3Feature br. Develop Release br. MasterMaster Hot fixMasterDevelopSviluppoHot fix in produzione
  5. 5. Pair programming e team per funzionalità4
  6. 6. Sintesi dei branch5Master: produzioneDevelop: integrazioneHotfixes: applicazione di bug fix inproduzioneRelease: release candidateFeature branches: branch dedicatiagli sviluppi di singole featureElenco dei branch
  7. 7. 6Contenuti••••Flusso completoBranch principaliBranch di supportoEsperienze, strumenti e riferimenti
  8. 8. I branch principali: master e develop7• origin e master non vengono maieliminati: esistono in qualsiasi momentodel progetto• Gli altri branch sono solo temporanei• origin/master è il branch principale per ilcodice production-ready• origin/develop è il branch principale pergli sviluppi (è anche il branch diriferimento per la continuous integration)• Quando il codice in develop è stabile asufficienza viene effettuato il merge sumaster e viene impostato il tag dellareleaseDescrizione e flusso di base
  9. 9. 8Contenuti••••Flusso completoBranch principaliBranch di supportoEsperienze, strumenti e riferimenti
  10. 10. Branch delle feature9Utilizzato per sviluppi a breve o lungotermine.Ci possono essere più feature branch inparallelo.Il branch può partire da develop e vieneeffettuato il merge di ritorno sempre sudevelopPuò essere chiamato con qualsiasi nomediverso da master, develop, release-* ohotfix-*Esiste tipicamente solo nel repository dellosviluppatoreDescrizione e flusso
  11. 11. Branch delle feature: comandi10Creare un nuovo branch per una feature:$ git checkout -b myfeature developSwitched to a new branch "myfeature"Incorporare un branch di una feature su develop:$ git checkout developSwitched to branch develop$ git merge --no-ff myfeatureUpdating ea1b82a..05e9557(Summary of changes)$ git branch -d myfeatureDeleted branch myfeature (was 05e9557).$ git push origin developDifferenza con e senza fast forward:
  12. 12. Branch delle release11Supportano la preparazione del codice per ilrilascio in produzioneA questo punto, tutte le feature che sonoconsiderate pronte per il rilascio devonoessere già state riportate su developIl branch può partire da develop e vieneeffettuato il merge di ritorno sempre sumaster e developConvenzione di naming: release-*Descrizione e flusso
  13. 13. Branch delle release: comandi12Creare un nuovo branch per una release:$ git checkout -b release-1.2 developSwitched to a new branch "release-1.2"$ ./bump-version.sh 1.2Files modified successfully, version bumped to 1.2.$ git commit -a -m "Bumped version number to 1.2"[release-1.2 74d9424] Bumped version number to 1.21 files changed, 1 insertions(+), 1 deletions(-)Concludere una release:Merge su master e tag:$ git checkout masterSwitched to branch master$ git merge --no-ff release-1.2Merge made by recursive.(Summary of changes)$ git tag -a 1.2Riportare le modifiche su develop:$ git checkout developSwitched to branch develop$ git merge --no-ff release-1.2Merge made by recursive.(Summary of changes)Rimuovere la release:$ git branch -d release-1.2Deleted branch release-1.2 (was ff452fe).
  14. 14. Branch degli hot fix13Serve per correggere bug fix critici inproduzione senza attendere che il ramodevelop sia pronto per il rilascio.Il branch può partire da master e vieneeffettuato il merge di ritorno sempre sumaster e developConvenzione di naming: hotfix-*Descrizione e flusso
  15. 15. Branch degli hot fix: comandi14Creare un nuovo hot fix per effettuare il bug fixing:$ git checkout -b hotfix-1.2.1 masterSwitched to a new branch "hotfix-1.2.1"$ ./bump-version.sh 1.2.1Files modified successfully, version bumped to 1.2.1.$ git commit -a -m "Bumped version number to 1.2.1"[hotfix-1.2.1 41e61bb] Bumped version number to 1.2.11 files changed, 1 insertions(+), 1 deletions(-)Merge su master dopo avere effettuato il bug fix:$ git commit -m "Fixed severe production problem"[hotfix-1.2.1 abbe5d6] Fixed severe production problem5 files changed, 32 insertions(+), 17 deletions(-)Concludere un hot fix:Merge su master e tag:$ git checkout masterSwitched to branch master$ git merge --no-ff hotfix-1.2.1Merge made by recursive.(Summary of changes)$ git tag -a 1.2.1Riportare il bug fix su develop:$ git checkout developSwitched to branch develop$ git merge --no-ff hotfix-1.2.1Merge made by recursive.(Summary of changes)Rimuovere l’hot fix:$ git branch -d hotfix-1.2.1Deleted branch hotfix-1.2.1 (was abbe5d6).Eccezione: quando esiste già un branch di release, il merge delbug fix deve essere effettuato sul release branch e non su develop
  16. 16. 15Contenuti••••Flusso completoBranch principaliBranch di supportoEsperienze, strumenti e riferimenti
  17. 17. Estensione git per operazioni git-flow ad alto livellohttps://github.com/nvie/gitflow16Esempi:git flow featuregit flow feature start <name> [<base>]git flow feature finish <name>git flow releasegit flow release start <release> [<base>]git flow release finish <release>git flow hotfixgit flow hotfix start <release> [<base>]git flow hotfix finish <release>
  18. 18. Supporto git-flow di Source Tree (frontend per Mac e Windows)http://blog.sourcetreeapp.com/2012/08/01/smart-branching-with-sourcetree-and-git-flow/17
  19. 19. RiferimentiArticolo originale: http://nvie.com/posts/a-successful-git-branching-model/Git-flow con rebase: http://ctoinsights.wordpress.com/2012/06/29/git-flow-with-rebase/18

×