Top Banner
VCS, DVCS, Git-flow La gestione dei sorgenti e il controllo di versione Tiziano Lattisi giovedì 20 giugno 13
38

VCS - DVCS - GIT-FLOW

Jul 13, 2015

Download

Technology

Tiziano Lattisi
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: VCS - DVCS - GIT-FLOW

VCS, DVCS, Git-flowLa gestione dei sorgenti e il controllo di versione

Tiziano Lattisi

giovedì 20 giugno 13

Page 2: VCS - DVCS - GIT-FLOW

a cosa serve? (1)Backup incrementale di modifiche

Gestione di versioni distinte di un software(funzionalità introdotte a breve, medio, lungo termine; personalizzazioni)

“Time machine” (per passi di sviluppo)

Documentazione sorgenti più efficace dei commenti nel codiceStatistiche

giovedì 20 giugno 13

Page 3: VCS - DVCS - GIT-FLOW

a cosa serve? (2)Lavoro contemporaneo sulla stessa risorsa

lock dei file (profili di accesso, necessità di un responsabile...)strumenti di merge (automatici con risoluzione conflitti)

Risoluzione bug (che potrebbero essere di versione)

giovedì 20 giugno 13

Page 4: VCS - DVCS - GIT-FLOW

Storia

19721974

1982

19851986

2000

20032005

Source Code Control System (Bell Labs)diff (AT&T)

GNU Revision Control System (Walter F. Tichy)patch (Larry Wall)

CVS (Dick Grune)

Subversion (Apache)

Darcs (David Roundy)

Git (Linus Torvalds)Mercurial (Matt Mackall)

giovedì 20 giugno 13

Page 5: VCS - DVCS - GIT-FLOW

diff & patch$ echo "prima riga" > test.txt$ cp test.txt test2.txt $ echo "seconda riga" >> test2.txt $ diff -u test.txt test2.txt > test.diff$ diff test.txt test2.txt 1a2> seconda riga$ patch << test.diff > $ patch < test.diff patching file test.txt$ diff test.txt test2.txt $ cat test.diff --- test.txt 2013-06-19 12:23:19.000000000 +0200+++ test2.txt2013-06-19 12:23:33.000000000 +0200@@ -1 +1,2 @@ prima riga+seconda riga

giovedì 20 giugno 13

Page 6: VCS - DVCS - GIT-FLOW

definizionihunk (o change): una modifica atomica ad un file

commit (o record): un insieme di hunk che porta lo sviluppo da A a B

branch: un ramo di sviluppo che porta ad un obiettivo specifico (ad esempio una feature)

giovedì 20 giugno 13

Page 7: VCS - DVCS - GIT-FLOW

cantieri apertiproduzione (la versione in uso)

la correzione di un baco

il test per la futura versione di produzione

lo sviluppo di una o più funzionalità (alcune per la prossima versione in test, altre per milestone più lontane...)

giovedì 20 giugno 13

Page 8: VCS - DVCS - GIT-FLOW

flowmaster: branch allineato con la versione in produzionedevelop: branch allineato con la versione in sviluppo

master

ver. 1.0

giovedì 20 giugno 13

Page 9: VCS - DVCS - GIT-FLOW

flowmaster: branch allineato con la versione in produzionedevelop: branch allineato con la versione in sviluppo

master

develop

ver. 1.0

giovedì 20 giugno 13

Page 10: VCS - DVCS - GIT-FLOW

flowmaster: branch allineato con la versione in produzionedevelop: branch allineato con la versione in sviluppo

master

develop

ver. 1.0

giovedì 20 giugno 13

Page 11: VCS - DVCS - GIT-FLOW

flowmaster: branch allineato con la versione in produzionedevelop: branch allineato con la versione in sviluppo

master

develop

ver. 1.0

giovedì 20 giugno 13

Page 12: VCS - DVCS - GIT-FLOW

flowmaster: branch allineato con la versione in produzionedevelop: branch allineato con la versione in sviluppo

master

develop

ver. 1.0 ver. 2.0

giovedì 20 giugno 13

Page 13: VCS - DVCS - GIT-FLOW

flowmaster: branch allineato con la versione in produzionedevelop: branch allineato con la versione in sviluppo

master

develop

ver. 1.0 ver. 2.0

giovedì 20 giugno 13

Page 14: VCS - DVCS - GIT-FLOW

feature branchbranch di sviluppo di una nuova funzionalitàramifica da develop e si innesta su developa fine sviluppo viene cancellato (merge o rebase)

develop

giovedì 20 giugno 13

Page 15: VCS - DVCS - GIT-FLOW

feature branchbranch di sviluppo di una nuova funzionalitàramifica da develop e si innesta su developa fine sviluppo viene cancellato (merge o rebase)

develop

feature/a

giovedì 20 giugno 13

Page 16: VCS - DVCS - GIT-FLOW

feature branchbranch di sviluppo di una nuova funzionalitàramifica da develop e si innesta su developa fine sviluppo viene cancellato (merge o rebase)

develop

feature/b

feature/a

giovedì 20 giugno 13

Page 17: VCS - DVCS - GIT-FLOW

feature branchbranch di sviluppo di una nuova funzionalitàramifica da develop e si innesta su developa fine sviluppo viene cancellato (merge o rebase)

develop

feature/b

feature/a

giovedì 20 giugno 13

Page 18: VCS - DVCS - GIT-FLOW

feature branchbranch di sviluppo di una nuova funzionalitàramifica da develop e si innesta su developa fine sviluppo viene cancellato (merge o rebase)

develop

feature/b

feature/a

giovedì 20 giugno 13

Page 19: VCS - DVCS - GIT-FLOW

feature branchbranch di sviluppo di una nuova funzionalitàramifica da develop e si innesta su developa fine sviluppo viene cancellato (merge o rebase)

develop

feature/b

feature/a

giovedì 20 giugno 13

Page 20: VCS - DVCS - GIT-FLOW

feature branchbranch di sviluppo di una nuova funzionalitàramifica da develop e si innesta su developa fine sviluppo viene cancellato (merge o rebase)

develop

feature/b

feature/a

giovedì 20 giugno 13

Page 21: VCS - DVCS - GIT-FLOW

feature branchbranch di sviluppo di una nuova funzionalitàramifica da develop e si innesta su developa fine sviluppo viene cancellato (merge o rebase)

develop

feature/b

feature/a

giovedì 20 giugno 13

Page 22: VCS - DVCS - GIT-FLOW

feature branchbranch di sviluppo di una nuova funzionalitàramifica da develop e si innesta su developa fine sviluppo viene cancellato (merge o rebase)

develop

feature/b

feature/a

giovedì 20 giugno 13

Page 23: VCS - DVCS - GIT-FLOW

feature branchbranch di sviluppo di una nuova funzionalitàramifica da develop e si innesta su developa fine sviluppo viene cancellato (merge o rebase)

develop

feature/b

feature/a

potenzialeconflitto

giovedì 20 giugno 13

Page 24: VCS - DVCS - GIT-FLOW

feature branchbranch di sviluppo di una nuova funzionalitàramifica da develop e si innesta su developa fine sviluppo viene cancellato (merge o rebase)

develop

feature/b

feature/a

potenzialeconflitto

giovedì 20 giugno 13

Page 25: VCS - DVCS - GIT-FLOW

hotfix branchbranch di fix per un bug in produzioneramifica da master (produzione) e si innesta su mastera fine sviluppo viene cancellato (può essere necessario un merge su develop)

masterver. 2.0

giovedì 20 giugno 13

Page 26: VCS - DVCS - GIT-FLOW

hotfix branchbranch di fix per un bug in produzioneramifica da master (produzione) e si innesta su mastera fine sviluppo viene cancellato (può essere necessario un merge su develop)

masterver. 2.0

hotfix/a

giovedì 20 giugno 13

Page 27: VCS - DVCS - GIT-FLOW

hotfix branchbranch di fix per un bug in produzioneramifica da master (produzione) e si innesta su mastera fine sviluppo viene cancellato (può essere necessario un merge su develop)

masterver. 2.0 ver. 2.1

hotfix/a

giovedì 20 giugno 13

Page 28: VCS - DVCS - GIT-FLOW

hotfix branchbranch di fix per un bug in produzioneramifica da master (produzione) e si innesta su mastera fine sviluppo viene cancellato (può essere necessario un merge su develop)

masterver. 2.0 ver. 2.1

hotfix/a

develop

merge indevelop?

giovedì 20 giugno 13

Page 29: VCS - DVCS - GIT-FLOW

hotfix branchbranch di fix per un bug in produzioneramifica da master (produzione) e si innesta su mastera fine sviluppo viene cancellato (può essere necessario un merge su develop)

masterver. 2.0 ver. 2.1

hotfix/a

develop

merge indevelop?

giovedì 20 giugno 13

Page 30: VCS - DVCS - GIT-FLOW

release branchcandidata in test per la prossima versione di produzioneramifica da develop e si innesta su masterviene generalmente “taggata” con un numero di versione

masterver. 2.1

develop

giovedì 20 giugno 13

Page 31: VCS - DVCS - GIT-FLOW

release branchcandidata in test per la prossima versione di produzioneramifica da develop e si innesta su masterviene generalmente “taggata” con un numero di versione

masterver. 2.1

release/3.0

develop

giovedì 20 giugno 13

Page 32: VCS - DVCS - GIT-FLOW

release branchcandidata in test per la prossima versione di produzioneramifica da develop e si innesta su masterviene generalmente “taggata” con un numero di versione

masterver. 2.1

release/3.0

develop

giovedì 20 giugno 13

Page 33: VCS - DVCS - GIT-FLOW

release branchcandidata in test per la prossima versione di produzioneramifica da develop e si innesta su masterviene generalmente “taggata” con un numero di versione

masterver. 2.1

release/3.0

develop

giovedì 20 giugno 13

Page 34: VCS - DVCS - GIT-FLOW

release branchcandidata in test per la prossima versione di produzioneramifica da develop e si innesta su masterviene generalmente “taggata” con un numero di versione

masterver. 2.1

release/3.0

develop

ver. 3.0

giovedì 20 giugno 13

Page 35: VCS - DVCS - GIT-FLOW

release branchcandidata in test per la prossima versione di produzioneramifica da develop e si innesta su masterviene generalmente “taggata” con un numero di versione

masterver. 2.1

release/3.0

develop

ver. 3.0

giovedì 20 giugno 13

Page 36: VCS - DVCS - GIT-FLOW

release branchcandidata in test per la prossima versione di produzioneramifica da develop e si innesta su masterviene generalmente “taggata” con un numero di versione

masterver. 2.1

release/3.0

develop

ver. 3.0

giovedì 20 giugno 13

Page 37: VCS - DVCS - GIT-FLOW

buona creanzapull, (risolvi i conflitti), pushcommit frequenti (ma “significativi”, potrebbero andare in changelog)test prima di pushregole di stesura dei commenti (es. niente nomi di file, forma dichiarativa, etc)definizione delle regole di flow:

utilizzo dei branchtempi di vita dei branchresponsabili dei branch principali

giovedì 20 giugno 13

Page 38: VCS - DVCS - GIT-FLOW

fine

Thank you.Tiziano Lattisi

Me: http://www.linkedin.com/in/tizianolattisi/Slides: http://www.slideshare.net/lattisi/

Spunti e approfondimenti

http://leif.me/papers/Singer2012a.pdfhttp://nvie.com/posts/a-successful-git-branching-model/

giovedì 20 giugno 13