SlideShare a Scribd company logo
Branching & Merging
strategies (with TFS) 28 Aprile
2016
Sponsored by
Come accelerare i tuoi rilasci a costo zero
Sponsor
Presentazione
• Igor Antonacci
• DevOps Engineer & System Architect @ Fresenius Medical Care
• Co-Fondatore di DotDotNet e GetLatestVersion.it
• Twitter: @bitbreaker
• Facebook: fb.me/igorantonacci
• Email: igor@igorantonacci.me
Agenda
• Introduzione
• Nomenclatura
• Perchè ...Strategies –
«Sto adottando la strategia giusta per il mio prodotto / Team / ciclo di sviluppo?»
• Strategy #1 – Main Only
• Strategy #2 – Release Isolation
• Strategy #3 – Development Isolation
• Strategy #4 – Development and Release Isolation
• Strategy #5 – Servicing and Release Isolation
• Strategy #6 – Servicing, Hotfix and Release Isolation
• Strategy #7 – Feature Isolation
• Strategy #8 – Code Promotion
• Branching and Merging Anti-Patterns
• Conclusioni
• Reference
Introduzione – 1
Context
• Centralized Source Control – TFVC SOLO come esempio
• Team con più di un membro (2 è sufficiente)
• Prodotto/i (Software) da consegnare (artifacts)
Gli Attori
Team members Project
Da consegnare in
tempo!
Utenti FELICI!
Codebase
Team
Problematica da risolvere
• Processo di sviluppo consolidato
• Design  Sviluppo  Test  Deploy
• Uno o più Prodotti Software
• Versioni differenti (prossima, in rilascio, in manutenzione)
• Clienti diversi / diverse personalizzazioni
• Uno o più Team
• «allocati» su Feature / Versioni differenti
• UNICA CODEBASE
NON ESISTE ALCUNO studio indipendente sulla correlazione tra
Processo di Sviluppo e Metodologia di Branching
Perchè ...Strategies
• Approccio empirico al problema
• Attaccare il «nemico» facendoci il meno male possibile
La strategia si applica a tutti i campi in cui per raggiungere l'obiettivo sono necessarie una serie di
operazioni separate, la cui scelta non è unica e/o il cui esito è incerto.
(cit. Wikipedia – Strategia)
Goal
• Gestire il lavoro concorrente di UNO o più Team sulla stessa
codebase
• Isolare il rischio introdotto da diversi insiemi di modifiche alla
codebase
• Fare delle istantanee della codebase al fine di gestire successivi
cambiamenti isolati (es. Branch per Release, Personalizzazioni
ecc.)
Nomenclatura
Termine Descrizione
Development Branch Branch che contiene i cambiamenti (alla codebase) per la prossima versione
Forward Integrate (FI) Merge da un ramo padre ad uno figlio
Reverse Integrate (RI) Merge da un ramo figlio ad uno padre
Hotfix Cambiamento necessario a riparare un bug «bloccante» o un problema che impatta
l’intero sistema.
Main Branch E’ il branch «che congiunge» il ramo di sviluppo con quello di rilascio.
Release Branch Branch dove confluirà il codice in preparazione per una specifica versione
Release Vehicle Il modo in cui il prodotto viene «rilasciato» al cliente (Hotfix, Major Release, Service Pack
etc.)
Service Pack (SP) Un insieme di hotfix e funzionalità per una versione precedente del prodotto
Strategy #1 – Main Only
Strategy #2 – Release Isolation
Strategy #3 – Development Isolation
Strategy #4 – Development and Release
Isolation
Strategy #5 – Servicing and Release Isolation
Strategy #6 – Servicing, Hotfix and Release
Isolation
Strategy #7 – Feature Isolation
Strategy #8 – Code Promotion
Branching and Merging Anti-Patterns
• Merge Paranoia – evitare di fare Merge a tutti i costi
• Merge Mania – Merge, Merge, Merge … come se piovesse 
• Big Bang Merge – Merge UNA VOLTA per «TUTTI» alla fine della fase di sviluppo
• Never-ending Merge - Merge continuo…
• Wrong-way merge – Fare il Merge di una feature sul ramo di una versione PRECEDENTE
• Branch-mania – come Merge-mania, ma per il Branch
• Cascading Branches – Branch che non confluiscono mai nel branch padre
• Mysterious Branches – Branch … e perché? 
• Temporary Branches – Branch effettuato per un cambiamento … ma che poi diventa un
workspace permanente
• Volatile Branches – Branch di uno o più Changeset anche se si trovano in uno stato unstable
• Development Freeze – SU LE MANIIIII
• Berlin Wall – Branch per dividere i membri del Team… non il loro lavoro
Conclusioni
• L’adozione di una Branching Strategy è NECESSARIA all’interno di
un Team
• La scelta della corretta Strategy non è sempre facile e non avviene
sempre al «primo colpo»
• Ogni Business / Dev Process ha delle caratteristiche uniche 
Create la Vs. Strategy … cum grano salis (cit.)
Reference
• Visual Studio ALM Rangers – Branching Strategies
(https://vsarbranchingguide.codeplex.com/)
• Branching Taxonomy – MS Research
(http://research.microsoft.com/apps/pubs/?id=209683 )
• Defining Your Branching and Merging Strategy
(https://msdn.microsoft.com/en-us/library/bb668955.aspx)
• Branch Folders and Files
(https://msdn.microsoft.com/en-us/library/ms181425(VS.110).aspx )

More Related Content

PPTX
Introduzione a git
PPTX
Universal app ma universal per davvero
PPTX
Quick intro sul Source Control su SQL Server
PPTX
ALM Revolutions - What's new in visual studio ALM 11
PPTX
Loving Beautiful Code - Alla Scoperta di Laravel 5 - Francesco Malatesta - Co...
PPTX
Dot netcampus2015 green-template
PPTX
Crea servizi REST per la tua App con ASP.NET 5
PDF
DevOpsHerous 2016 - 29/10/2016
Introduzione a git
Universal app ma universal per davvero
Quick intro sul Source Control su SQL Server
ALM Revolutions - What's new in visual studio ALM 11
Loving Beautiful Code - Alla Scoperta di Laravel 5 - Francesco Malatesta - Co...
Dot netcampus2015 green-template
Crea servizi REST per la tua App con ASP.NET 5
DevOpsHerous 2016 - 29/10/2016

What's hot (18)

PPTX
Le novità di Visual Studio 2015 per lo sviluppatore ASP.NET
PDF
Git branching model
PPTX
Php Day 2009:Un Salto Nel Buio
PPTX
Php for ASP.NET Developers
PPTX
Creare App per Office 365 con ASP.NET MVC 5
PDF
Meetup PrestaShop Torino [IT]
PPTX
Dal requisito all'implementazione @ CD2010
PPTX
SonarQube e il debito tecnico - Matteo Emili
PPTX
DevOps by examples - Agile O'Day 2017
PPTX
Keep calm and Deploy - Panoramica sui problemi che emergono in fase di rilasc...
KEY
Corso Python Deltapromo - Lezione 3
PPTX
.NET Core, ASP.NET Core e Linux per il Mobile
PPTX
Keep calm and deploy
PDF
Web app slots and WebAPI versioning
PPTX
Automatically deployment to Azure Web Sites
PPTX
Tfs Basic - Quick Intro
PPTX
Il "rilascio" con Octopus Deploy (visto dagli occhi di un dev)
PDF
Mauro Lorenzutti - Il passaggio da Magento 1 a Magento 2: le 5W
Le novità di Visual Studio 2015 per lo sviluppatore ASP.NET
Git branching model
Php Day 2009:Un Salto Nel Buio
Php for ASP.NET Developers
Creare App per Office 365 con ASP.NET MVC 5
Meetup PrestaShop Torino [IT]
Dal requisito all'implementazione @ CD2010
SonarQube e il debito tecnico - Matteo Emili
DevOps by examples - Agile O'Day 2017
Keep calm and Deploy - Panoramica sui problemi che emergono in fase di rilasc...
Corso Python Deltapromo - Lezione 3
.NET Core, ASP.NET Core e Linux per il Mobile
Keep calm and deploy
Web app slots and WebAPI versioning
Automatically deployment to Azure Web Sites
Tfs Basic - Quick Intro
Il "rilascio" con Octopus Deploy (visto dagli occhi di un dev)
Mauro Lorenzutti - Il passaggio da Magento 1 a Magento 2: le 5W
Ad

Viewers also liked (12)

PDF
Don’t await … try async/await !
PPTX
Azure Application Insights
PDF
Introduzione a ReactiveX
PPTX
Database under source control
PPTX
There is a bot for that
PPTX
The five dysfunctions of a team
PPT
Team Foundation Server Extensibility Enhancements
PPTX
Branching and Merging Practices
PPT
Team Foundation Server 2008 Overview
PPTX
Team Foundation Server - Source Control
PPTX
Team Foundation Server 2010 - Version Control
PDF
Branching Strategies: Feature Branches vs Branch by Abstraction
Don’t await … try async/await !
Azure Application Insights
Introduzione a ReactiveX
Database under source control
There is a bot for that
The five dysfunctions of a team
Team Foundation Server Extensibility Enhancements
Branching and Merging Practices
Team Foundation Server 2008 Overview
Team Foundation Server - Source Control
Team Foundation Server 2010 - Version Control
Branching Strategies: Feature Branches vs Branch by Abstraction
Ad

Similar to Branching & Merging strategies (with TFS) (20)

PPTX
Alm pills - Sessione community tour Dot Net Umbria 2011
PDF
Trunk Based Development is a social matter
PDF
MySQL Tech Tour 2015 - Soluzioni di alta disponibilità con MySQL
PPTX
Gestione del codice sorgente con Visual Studio Online
PPTX
Inversion of Control @ CD2008
PDF
Le 7 sfide da affrontare nella migrazione da monolite a miniservizi
PDF
Microsoft Fast - Overview
PDF
Exploring VS Code
PPTX
DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...
PPTX
Webcast - Introduzione a Visual Studio Online
PPTX
Visual Studio Release Management - una nuova Weltanschauung o un'evoluzione n...
PPTX
Code Generation con i templates T4 in visual studio
PPTX
Progettare applicazioni con il modeling project di Visual Studio 2010
PDF
VMUG.IT @ ITway Campus 2014
PDF
Debugging with-z-ray
PDF
Alfresco Day Roma 2015: TAI
PPTX
Entity Framework 7, Back To The Future!
PPTX
Slide typescript - net campus
PPTX
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
Alm pills - Sessione community tour Dot Net Umbria 2011
Trunk Based Development is a social matter
MySQL Tech Tour 2015 - Soluzioni di alta disponibilità con MySQL
Gestione del codice sorgente con Visual Studio Online
Inversion of Control @ CD2008
Le 7 sfide da affrontare nella migrazione da monolite a miniservizi
Microsoft Fast - Overview
Exploring VS Code
DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...
Webcast - Introduzione a Visual Studio Online
Visual Studio Release Management - una nuova Weltanschauung o un'evoluzione n...
Code Generation con i templates T4 in visual studio
Progettare applicazioni con il modeling project di Visual Studio 2010
VMUG.IT @ ITway Campus 2014
Debugging with-z-ray
Alfresco Day Roma 2015: TAI
Entity Framework 7, Back To The Future!
Slide typescript - net campus
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD

Branching & Merging strategies (with TFS)

  • 1. Branching & Merging strategies (with TFS) 28 Aprile 2016 Sponsored by Come accelerare i tuoi rilasci a costo zero
  • 3. Presentazione • Igor Antonacci • DevOps Engineer & System Architect @ Fresenius Medical Care • Co-Fondatore di DotDotNet e GetLatestVersion.it • Twitter: @bitbreaker • Facebook: fb.me/igorantonacci • Email: igor@igorantonacci.me
  • 4. Agenda • Introduzione • Nomenclatura • Perchè ...Strategies – «Sto adottando la strategia giusta per il mio prodotto / Team / ciclo di sviluppo?» • Strategy #1 – Main Only • Strategy #2 – Release Isolation • Strategy #3 – Development Isolation • Strategy #4 – Development and Release Isolation • Strategy #5 – Servicing and Release Isolation • Strategy #6 – Servicing, Hotfix and Release Isolation • Strategy #7 – Feature Isolation • Strategy #8 – Code Promotion • Branching and Merging Anti-Patterns • Conclusioni • Reference
  • 5. Introduzione – 1 Context • Centralized Source Control – TFVC SOLO come esempio • Team con più di un membro (2 è sufficiente) • Prodotto/i (Software) da consegnare (artifacts)
  • 6. Gli Attori Team members Project Da consegnare in tempo! Utenti FELICI! Codebase Team
  • 7. Problematica da risolvere • Processo di sviluppo consolidato • Design  Sviluppo  Test  Deploy • Uno o più Prodotti Software • Versioni differenti (prossima, in rilascio, in manutenzione) • Clienti diversi / diverse personalizzazioni • Uno o più Team • «allocati» su Feature / Versioni differenti • UNICA CODEBASE NON ESISTE ALCUNO studio indipendente sulla correlazione tra Processo di Sviluppo e Metodologia di Branching
  • 8. Perchè ...Strategies • Approccio empirico al problema • Attaccare il «nemico» facendoci il meno male possibile La strategia si applica a tutti i campi in cui per raggiungere l'obiettivo sono necessarie una serie di operazioni separate, la cui scelta non è unica e/o il cui esito è incerto. (cit. Wikipedia – Strategia)
  • 9. Goal • Gestire il lavoro concorrente di UNO o più Team sulla stessa codebase • Isolare il rischio introdotto da diversi insiemi di modifiche alla codebase • Fare delle istantanee della codebase al fine di gestire successivi cambiamenti isolati (es. Branch per Release, Personalizzazioni ecc.)
  • 10. Nomenclatura Termine Descrizione Development Branch Branch che contiene i cambiamenti (alla codebase) per la prossima versione Forward Integrate (FI) Merge da un ramo padre ad uno figlio Reverse Integrate (RI) Merge da un ramo figlio ad uno padre Hotfix Cambiamento necessario a riparare un bug «bloccante» o un problema che impatta l’intero sistema. Main Branch E’ il branch «che congiunge» il ramo di sviluppo con quello di rilascio. Release Branch Branch dove confluirà il codice in preparazione per una specifica versione Release Vehicle Il modo in cui il prodotto viene «rilasciato» al cliente (Hotfix, Major Release, Service Pack etc.) Service Pack (SP) Un insieme di hotfix e funzionalità per una versione precedente del prodotto
  • 11. Strategy #1 – Main Only
  • 12. Strategy #2 – Release Isolation
  • 13. Strategy #3 – Development Isolation
  • 14. Strategy #4 – Development and Release Isolation
  • 15. Strategy #5 – Servicing and Release Isolation
  • 16. Strategy #6 – Servicing, Hotfix and Release Isolation
  • 17. Strategy #7 – Feature Isolation
  • 18. Strategy #8 – Code Promotion
  • 19. Branching and Merging Anti-Patterns • Merge Paranoia – evitare di fare Merge a tutti i costi • Merge Mania – Merge, Merge, Merge … come se piovesse  • Big Bang Merge – Merge UNA VOLTA per «TUTTI» alla fine della fase di sviluppo • Never-ending Merge - Merge continuo… • Wrong-way merge – Fare il Merge di una feature sul ramo di una versione PRECEDENTE • Branch-mania – come Merge-mania, ma per il Branch • Cascading Branches – Branch che non confluiscono mai nel branch padre • Mysterious Branches – Branch … e perché?  • Temporary Branches – Branch effettuato per un cambiamento … ma che poi diventa un workspace permanente • Volatile Branches – Branch di uno o più Changeset anche se si trovano in uno stato unstable • Development Freeze – SU LE MANIIIII • Berlin Wall – Branch per dividere i membri del Team… non il loro lavoro
  • 20. Conclusioni • L’adozione di una Branching Strategy è NECESSARIA all’interno di un Team • La scelta della corretta Strategy non è sempre facile e non avviene sempre al «primo colpo» • Ogni Business / Dev Process ha delle caratteristiche uniche  Create la Vs. Strategy … cum grano salis (cit.)
  • 21. Reference • Visual Studio ALM Rangers – Branching Strategies (https://vsarbranchingguide.codeplex.com/) • Branching Taxonomy – MS Research (http://research.microsoft.com/apps/pubs/?id=209683 ) • Defining Your Branching and Merging Strategy (https://msdn.microsoft.com/en-us/library/bb668955.aspx) • Branch Folders and Files (https://msdn.microsoft.com/en-us/library/ms181425(VS.110).aspx )