Agiler durch dezentrale versionskontrolle (mit git) oop2012 alfert_antoni
-
Upload
zuehlke -
Category
Technology
-
view
647 -
download
0
description
Transcript of Agiler durch dezentrale versionskontrolle (mit git) oop2012 alfert_antoni
© Zühlke 2012
Klaus Alfert, Jonatan Antoni
Agiler durch dezentrale Versionskontrolle (mit Git)
26. Januar 2012Folie 1 von 40
Optionally insert a picture
Jonatan Antoni, Dr. Klaus Alfert
© Zühlke 2012Agiler mit dezentraler Versionskontrolle (mit Git) | Klaus Alfert, Jonatan Antoni
Viele Open-Source Projekte wechseln zur Zeit ihre Versionsverwaltung. Warum?
26. Januar 2012 Folie 2 von 40
© Zühlke 2012Agiler mit dezentraler Versionskontrolle (mit Git) | Klaus Alfert, Jonatan Antoni
Der Industrie-Standard:Zentrale Versionskontrolle
SVN
CVS
perforceVSS
TFS
ClearCase
MKS Integrity
Harvest
Dimensions
Team Concert
PVCS
RCSSCCS
Depot
26. Januar 2012 Folie 3 von 40
© Zühlke 2012Agiler mit dezentraler Versionskontrolle (mit Git) | Klaus Alfert, Jonatan Antoni
Der Industrie-Standard:Zentrale Versionskontrolle
commit
updatecheckoutmerge
Repository
WorkingCopy
WorkingCopy
WorkingCopy
branchcommit
Zentral
Optimistisch?Pessimistisch?
26. Januar 2012 Folie 4 von 40
© Zühlke 2012
Klaus Alfert, Jonatan Antoni
Dezentrale Versionskontrolle
Die neumodische Variante
26. Januar 2012Folie 5 von 40
git
Bazaar
Darcs
Mercurial (hg)
BitKeeper
© Zühlke 2012Agiler mit dezentraler Versionskontrolle (mit Git) | Klaus Alfert, Jonatan Antoni
Dezentrale Versionskontrolle (2)Mehrere Entwickler – ein gemeinsames Repository
Dezentral, 1:N
pull
commit
branch
mergeRepository A
WorkingCopy
Repository
Repository B
WorkingCopy
push
log
clone
26. Januar 2012 Folie 6 von 40
© Zühlke 2012Agiler mit dezentraler Versionskontrolle (mit Git) | Klaus Alfert, Jonatan Antoni
Dezentrale Versionskontrolle (3)Mehrere Entwickler – mehrere Repositories
Dezentral, M:N
clone
commit
branch
mergeRepository A
WorkingCopy
Repository RepositoryRepository
Repository CRepository B
WorkingCopy
WorkingCopy
push
log
pull
initpush
pull
push
26. Januar 2012 Folie 7 von 40
© Zühlke 2012Agiler mit dezentraler Versionskontrolle (mit Git) | Klaus Alfert, Jonatan Antoni
Das große Risiko: Unbeherrschbare Strukturen
26. Januar 2012 Folie 8 von 40
Repository
WorkingCopy
WorkingCopy
Repository
WorkingCopy
WorkingCopy
Repository
WorkingCopy
WorkingCopy
Repository
WorkingCopy
WorkingCopy
Repository
WorkingCopy
WorkingCopy
Repository
WorkingCopy
WorkingCopy
© Zühlke 2012
Klaus Alfert, Jonatan Antoni
Wie arbeitet Git?
Insert a picture
26. Januar 2012Folie 9 von 40
© Zühlke 2012Agiler mit dezentraler Versionskontrolle (mit Git) | Klaus Alfert, Jonatan Antoni
Parallele Entwicklung mit Git
A B
Alice
Charly
Bob
A B
A B
clone
clone
C
D
E
pull
D
F
pull
C
D
F
G
E
G
pull
pull
C
F
E
G
26. Januar 2012 Folie 10 von 40
© Zühlke 2012Agiler mit dezentraler Versionskontrolle (mit Git) | Klaus Alfert, Jonatan Antoni
• Viele kleine Commits
• Automatische Branches
• Automatische Merges
• Vollständige Historie: erleichtert das Mergen erheblich
Beobachtungen
26. Januar 2012 Folie 11 von 40
© Zühlke 2012Agiler mit dezentraler Versionskontrolle (mit Git) | Klaus Alfert, Jonatan Antoni
Am Anfang war das Repository…
Bob
PrivateRepository
WorkingCopy
init
PublicRepository
clonepush
commit branchtag
tree
blob blob
Index
checkoutmergebranch
addrm
commit
26. Januar 2012 Folie 12 von 40
© Zühlke 2012Agiler mit dezentraler Versionskontrolle (mit Git) | Klaus Alfert, Jonatan Antoni
…darin liegt die gesamte Historie.
commit branchtag
tree
blob blob
commit branch
tree
blob
25A31492
8675
de7d feeb 10ac
cafe
1123
SHA1
26. Januar 2012 Folie 13 von 40
© Zühlke 2012Agiler mit dezentraler Versionskontrolle (mit Git) | Klaus Alfert, Jonatan Antoni
Git und Subversion: Koexistenz erlaubt Migrationspfade.
SubversionRepository
WorkingCopy
AliceBob
BobsRepository
WorkingCopy
AlicesRepository
WorkingCopy
updatecommit
fetch
fetch
dcommit dcommit
push/pull
Joe
26. Januar 2012 Folie 14 von 40
© Zühlke 2012Agiler mit dezentraler Versionskontrolle (mit Git) | Klaus Alfert, Jonatan Antoni
Dezentrale Versionskontrolle – Warum will ich das?
Fast alle Operationen sind lokal– Extrem schnell– Offline-Arbeiten– Feingranulare Commits
Jeder hat eine Kopie des Repositories– Backups– Komplette Historie (GUIDs vs. Counter)
Branching/Merging an der Tagesordnung– Branching ist schnell– Merging ist einfach
Kein zentrales Repository notwendig– Alle Repositories sind (technisch) gleichberechtigt– Jeder kann von jedem „klonen“
26. Januar 2012 Folie 15 von 40
© Zühlke 2012
Klaus Alfert, Jonatan Antoni
Organisation und technische Kontrolle
Wie organisieren sich Open Source Projekte?
26. Januar 2012Folie 16 von 40
© Zühlke 2012Agiler mit dezentraler Versionskontrolle (mit Git) | Klaus Alfert, Jonatan Antoni
Organisation von Repositories und Workflows (1)
Kleinere OS Projekte
Maintainer
Contributor
26. Januar 2012 Folie 17 von 40
© Zühlke 2012Agiler mit dezentraler Versionskontrolle (mit Git) | Klaus Alfert, Jonatan Antoni
Organisation von Repositories und Workflows (1)
Integration Manager Workflow
Entwickler
Integrator
26. Januar 2012 Folie 18 von 40
IntegrationRepository
© Zühlke 2012Agiler mit dezentraler Versionskontrolle (mit Git) | Klaus Alfert, Jonatan Antoni
Organisation von Repositories und Workflows (2)
Größere OS Projekte
Maintainer
Committer
Contributor
26. Januar 2012 Folie 19 von 40
© Zühlke 2012Agiler mit dezentraler Versionskontrolle (mit Git) | Klaus Alfert, Jonatan Antoni
Organisation von Repositories und Workflows (2)
IntegrationRepository
Entwickler
Leutnant
Diktator
Diktator und Leutnant Workflow
26. Januar 2012 Folie 20 von 40
© Zühlke 2012
Klaus Alfert, Jonatan Antoni
Dezentrales SCM im Unternehmen
Lohnt sich der Wechsel?
26. Januar 2012Folie 21 von 40
© Zühlke 2012Agiler mit dezentraler Versionskontrolle (mit Git) | Klaus Alfert, Jonatan Antoni
Die Organisationen von OS Projekten und Unternehmen sind oft strukturell ähnlich
Rollen heißen anders, machen aber ähnliches
Integrator
Release Manager, Chef-Architekt
Entwickler
26. Januar 2012 Folie 22 von 40
© Zühlke 2012
Repository
WorkingCopy
WorkingCopy
Repository
WorkingCopy
WorkingCopy
Repository
WorkingCopy
WorkingCopy
Repository
WorkingCopy
WorkingCopy
Repository
WorkingCopy
WorkingCopy
Repository
WorkingCopy
WorkingCopy
TeamRepository
TeamRepository
Agiles Teams optimieren sich lokal
© Zühlke 2012Agiler mit dezentraler Versionskontrolle (mit Git) | Klaus Alfert, Jonatan Antoni
Agiles Teams optimieren sich lokal
Beobachtungen
• dezentrale Repositories bilden die direkte Kommunikation agiler Teams ab
• Teams können sich lokal optimieren
• teamübergreifende Kollaboration wird gefördert
Konsequenzen
Die Werte des Manifestes der agilen Software Entwicklung sind grundlegend.
Vertrauen in das Team ist wesentlich.
Direkte Kommunikationswege sind Voraussetzung.
26. Januar 2012 Folie 24 von 40
MSR1200
MUR1200S00
RTM1200S00U00
Gleichzeitigangelegt
Branch
Branch
StabilisierungRelease 12.0.0.0
Release 12.0.0.0
RIRI
Branch
Branch
StabilisierungRelease 12.0.1.0
Release 12.0.1.0
RIRI
MUR1200S01
RTM1200S01U00
Gleichzeitigangelegt
R/O R/O
Branch
RTM1200S01U00P42Kundenspezifischer
Patch. Integration nicht zwingend
erforderlich!
Branch
MAIN
FI RIRI
MSR1201
MUR1201S00
RTM1201S00U00
Gleichzeitigangelegt
Branch
Branch
StabilisierungRelease 12.1.0.0
Release 12.1.0.0
RIRI
R/O
Branch
RI
RTM1201S00U01
Branch
StabilisierungRelease 12.1.0.1
Release 12.1.0.1
RI
R/O
RIRI
CM
Entwicklung
Reife für R12.0 erreicht
Reife für R12.1 erreicht
Branch
I1500
FI RI
Stabilisierung
FI RI
Stabilisierung
Branch
I1500_TCOMM
RI
Stabilisierung
FI RI
Stabilisierung
FI
Branch
I1501
FI RI
Stabilisierung
Branch
I1501_TCOMMU01
Branch
I1501_TCOMMU42
FI RI
Stabilisierung
FI RI
Stabilisierung
Branch
I1501_TCOMMU42_WXYZ
RI
Stabilisierung
FI
BM
Baseless Merge:Möglich, aber nicht zu empfehlen!
Branch
I1501_TCOMMD23
RI
Stabilisierung
FI
Next generation:Parallel-Entwicklung
zu Stabilisierungs-Phase
Entwicklung Patch-Release 12.0.1.0-42
R/O
Release 12.0.1.0-42
RIRI
RI FI FI
FI
IHSP_
FI RI
Stabilisierung
RTM1201HSP23
FertigstellungHSP Release 23
HSP Release 23
Reife für HSP Release 23 erreicht
Branch
R/O
FI FI
Branch
I1501_TCOMMU23
RTM1201S00U02
Branch
StabilisierungRelease 12.1.0.2
Release 12.1.0.2
RI
R/O
RIRIFI
FI
© Zühlke 2012Agiler mit dezentraler Versionskontrolle (mit Git) | Klaus Alfert, Jonatan Antoni
Repositories ersetzen Branches
Zentralisierte Verwaltung kann dezentral in anderen Kategorien gehalten werden
• Integration Branches Integration Repositories
• Team/Features Branches Team Repositories Feature Branches innerhalb der Repositories
• Release Branches Release Repositories
Die Nutzer sehen innerhalb ihrer Repositories nur die Branches, die für ihren Kontext relevant sind.
26. Januar 2012 Folie 26 von 40
© Zühlke 2012Agiler mit dezentraler Versionskontrolle (mit Git) | Klaus Alfert, Jonatan Antoni
Skalierung: Am Linux Kernel arbeiten einige tausend Entwickler
Fakten aus dem Linux-Repository (git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git, Stand 13.01.2012)
Clone-Kommando:
• Überträgt 460MiB, Dauer: ca. 15 Minuten
Working-Copy:
• 516MB, ~40‘000 Dateien, 2373 Ordner
Lokales Repository (.git-Verzeichnis):
• 526 MB, 23 Dateien, 13 Ordner
• 284.440 Commits, 11.618 Committer (seit 2005)
• Kompletter(!) Short-Log über alle Commits: 10sec
26. Januar 2012 Folie 27 von 40
© Zühlke 2012Agiler mit dezentraler Versionskontrolle (mit Git) | Klaus Alfert, Jonatan Antoni
Geografisch verteilte Entwicklung ist heute bei OS und der Industrie der RegelfallKlassische Lösung:
• Proxies, um Latenzen beim Lesen zu reduzieren
• Schreibzugriffe in der Regel auf den zentralen Server
Dezentral: Entkoppelte Repositories
• Schneller lokaler Lese- und Schreibzugriff
• Expliziter Datenaustausch mit anderen Repositories als Prozesselemente der Zusammenarbeit
26. Januar 2012 Folie 28 von 40
© Zühlke 2012
TeamRepository
TeamRepository
CH
UK
DE
F
UK
DE
Abkürzungen für geographisch verteilte agile Teams
© Zühlke 2012Agiler mit dezentraler Versionskontrolle (mit Git) | Klaus Alfert, Jonatan Antoni
Wann kann man Dezentrales SCM einsetzen?
Bestehende SCM-Organisationen müssen ihre Prozesse und Organisation anpassen.
Je zentralistischer und regulierter die bisherigen Organisation, um so größer ist der Anpassungsaufwand (Tool vs. Organisation).
Zentrales SCM Dezentrales SCM
Command & ControlManagement-Stil
Team-orientierter
Management-Stil
26. Januar 2012 Folie 30 von 40
© Zühlke 2012Agiler mit dezentraler Versionskontrolle (mit Git) | Klaus Alfert, Jonatan Antoni
Zusammenfassung
Dezentrales SCM ist inzwischen soweit, dass man es professionell einsetzen kann. Eine agile Arbeitsweise wird dadurch gefördert.
Der Mehrwert ist:
• Die Entwickler können spürbar schneller arbeiten: Alle aufwändigen SCM-Operationen sind lokal
• Skalierung auch über segmentierte Netzwerkanbindung möglich (u.a. geogr. Verteilung)
• Flexible Topologien von streng hierarchisch bis massiv kollaborativ (agil) möglich
26. Januar 2012 Folie 31 von 40
© Zühlke 2012Agiler mit dezentraler Versionskontrolle (mit Git) | Klaus Alfert, Jonatan Antoni
Fazit
26. Januar 2012 Folie 32 von 40
Wenn dezentrales SCM zu Ihrer Organisation passt, nutzen Sie es – nicht nur Ihre Entwickler werden es Ihnen danken!