2. Mai sentito parlare di peer-to-peer ?
DRCS – Distributed Revision Control System
3. Distributed Revision Control System – La Vision
Architetturale
• Working Directory accoppiata con il repository
• No single-point of failure
• Utilizzo della rete non legato all’operatività quotidiana.
• Supporto nativo a progetti multi-site
Processuale
• Definizione di workflow collaborativi e di revisione del codice.
• Peer-to-Peer alignment
• Continous Branching and Merging
DRCS – Vision
4. Centralized Revision Control System – La Vision
• Un server, tante working copy client
• Security and Access Control centralizzati
• Backup Centralizzato
• Mirroring complicato e in sola lettura
Centralized RCS – Vision
5. Ciascun utente ha una copia del repository in locale
clonata da un altro repository
DRCS – Come funziona
6. Git
• Creato da Linus Torvalds per supportare lo sviluppo di Linux
worldwide nel 2005
• Utilizzato da grandi progetti open source
• Linux
• Android
• Eclipse
• KDE
• Svariate GUI, soluzioni open source per i vari sistemi
operativi e servizi di hosting
• Community molto attiva (frequentata anche da Google)
Un pò di storia…
7. Git
• Totalmente Distribuito
• Scalabile
• Efficiente
• Garantisce Integrità dei dati
• Forte supporto al lavoro parallelo
• Immutabilità e transazioni atomiche
GIT – Le caratteristiche
8. Cosa ci serve..
Linux
• apt-get install git-core
Mac
• http://code.google.com/p/git-osx-installer/
Windows
• http://code.google.com/p/msysgit/
GIT – Si comincia
9. .. Git è stato creato da Linus.. Due considerazioni
• Impariamo a usarlo da shell
• Per padroneggiarlo dobbiamo partire dalla sua
struttura dati
Avvertenza
13. HEAD
Voi siete qui !
• git show HEAD~2 (oppure HEAD^^)
• git show HEAD@{yesterday}
• git show HEAD@{2.days.ago}
• git show HEAD^2 (in caso di più ancestor)
• git show HEAD~3^2
Git Basics
15. Staging Area (Index)
• Un’area intermedia tra la working directory e il repository.
L’operazione di commit versiona il contenuto della staging area
git add
Aggiunge i file modificati alla staging
git commit
Versiona il contenuto della staging
Git Basics
17. git status
• Riassume la situazione della working directory rispetto alla
staging area.
git diff
Confronta la working directory con la staging area
git diff --staged
Confronta la staging area con la HEAD
Git Basics
18. Reverting
• Git fornisce diverse possibilità di intervento su commit già
eseguite
• Sovrascrittura di commit esistenti (amend)
• Rimozione di commit esistenti (reset)
• Revert di commit precedenti (revert)
Attenzione !! Alcune sono irreversibili !
Modificano il grafo delle commit !
Prima di usarle pensarci molto bene !
Non usarle MAI su commit già inviate ai
server remoti !
Git Basics
19. Object References
• Un branch è un reference a una commit !
• Un puntatore che si sposta nel grafo delle commit
• Il default branch è master..
• cat .git/refs/heads/master
Git Branching
22. Questo era quello semplice….
• C’e’ un altro modo per eseguire il merge di due rami..
Rebase…
• git checkout experiment
• git rebase master
• Fast-Forward…
• Stesso risultato del merge semplice ma…
Git Merging
23. Rebase
• La storia è più ‘pulita’, si perde traccia dell’avvenuta
ramificazione
• In caso di integrazione di una patch, chi integra deve
solo eseguire un fast-forward..
Git Merging
24. Rebase
Una storia molto più lineare !!
Non fate rebase su commit
che avete già inviato a repository remoti
Si deve usare solo per rendere
più lineare la storia del proprio lavoro
prima di eseguire operazioni di push
verso altri repository
Git Merging
25. Branching workflow
• Master – codice stabile pronto per il rilascio
• Branch di sviluppo (long-running)
• Topic – branches usa e getta (tipo hotfix)
Git Branching Work ow
26. Remote
• Ora che sappiamo lavorare sul nostro repo.. Dobbiamo
imparare a interagire con gli altri repository
git remote -v
• Se abbiamo clonato il nostro repo troviamo configurato il
repository remoto origin
git remote add <nome_remote> <indirizzo>
• Aggiunge il repository specificato dall’indirizzo, all’elenco dei
remoti con il nome che vogliamo dargli
• Possiamo riferirci al nuovo remote con il nome che gli abbiamo
dato
Git Remote
29. Un Git server è un repository remoto (sempre
accessibile), utilizzato per la collaboration.
Git On Server
30. Ci sono diversi protocolli configurabili per rendere un
git server raggiungibile
Git On Server
31. Workflow Distribuiti
• Git è peer-to-peer. Potenzialmente qualunque peer può
ricevere e inviare dati da e verso gli altri peer.
• Si possono definire le relazioni tra i peer per stabilire dei
workflow collaborativi..
• Non tutti i repository sono uguali !
• Solo alcuni repository possono eseguire push sui repo
“blessed”
Work ow Distribuiti
32. Centralized Workflow
• Peer alignment
• Per eseguire il push nello shared repo, devo prima essere
aggiornato (pull)… Vi ricorda qualcosa ??
Work ow Distribuiti
33. Dittatore – Luogotenenti Workflow
• Usato per lo sviluppo del kernel linux
• I luogotenenti integrano il lavoro dei developer nel proprio
master
• Il dittatore integra i master branches dei luogotenenti nel suo
Work ow Distribuiti
34. Bibliografia
• http://progit.org/
• http://git-scm.com/
Git Scm Italia
• http://www.git-scm.it
Biblioga a
35. Emerasoft s.r.l.
C.so Orbassano, 336 - 10137 Torino (TO)
Tel. 011 19879273
Professional Services Manager:
Guido Levi
guido.levi@emerasoft.com