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)
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
lintero 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
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
Ladozione di una Branching Strategy 竪 NECESSARIA allinterno 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 )