32
© Zühlke 2012 Klaus Alfert, Jonatan Antoni Agiler durch dezentrale Versionskontrolle (mit Git) 26. Januar 2012 Folie 1 von 40 Optionally insert a picture Jonatan Antoni, Dr. Klaus Alfert

Agiler durch dezentrale versionskontrolle (mit git) oop2012 alfert_antoni

  • Upload
    zuehlke

  • View
    647

  • Download
    0

Embed Size (px)

DESCRIPTION

Vorstellung der flexiblen Einsatzmöglichkeiten der dezentralen Versionskontrolle. Am Beispiel von Git wird gezielt auf technische Details eingegangen.

Citation preview

Page 1: 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

Page 2: Agiler durch dezentrale versionskontrolle (mit git) oop2012 alfert_antoni

© 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

Page 3: Agiler durch dezentrale versionskontrolle (mit git) oop2012 alfert_antoni

© 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

Page 4: Agiler durch dezentrale versionskontrolle (mit git) oop2012 alfert_antoni

© 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

Page 5: Agiler durch dezentrale versionskontrolle (mit git) oop2012 alfert_antoni

© Zühlke 2012

Klaus Alfert, Jonatan Antoni

Dezentrale Versionskontrolle

Die neumodische Variante

26. Januar 2012Folie 5 von 40

git

Bazaar

Darcs

Mercurial (hg)

BitKeeper

Page 6: Agiler durch dezentrale versionskontrolle (mit git) oop2012 alfert_antoni

© 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

Page 7: Agiler durch dezentrale versionskontrolle (mit git) oop2012 alfert_antoni

© 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

Page 8: Agiler durch dezentrale versionskontrolle (mit git) oop2012 alfert_antoni

© 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

Page 9: Agiler durch dezentrale versionskontrolle (mit git) oop2012 alfert_antoni

© Zühlke 2012

Klaus Alfert, Jonatan Antoni

Wie arbeitet Git?

Insert a picture

26. Januar 2012Folie 9 von 40

Page 10: Agiler durch dezentrale versionskontrolle (mit git) oop2012 alfert_antoni

© 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

Page 11: Agiler durch dezentrale versionskontrolle (mit git) oop2012 alfert_antoni

© 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

Page 12: Agiler durch dezentrale versionskontrolle (mit git) oop2012 alfert_antoni

© 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

Page 13: Agiler durch dezentrale versionskontrolle (mit git) oop2012 alfert_antoni

© 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

Page 14: Agiler durch dezentrale versionskontrolle (mit git) oop2012 alfert_antoni

© 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

Page 15: Agiler durch dezentrale versionskontrolle (mit git) oop2012 alfert_antoni

© 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

Page 16: Agiler durch dezentrale versionskontrolle (mit git) oop2012 alfert_antoni

© Zühlke 2012

Klaus Alfert, Jonatan Antoni

Organisation und technische Kontrolle

Wie organisieren sich Open Source Projekte?

26. Januar 2012Folie 16 von 40

Page 17: Agiler durch dezentrale versionskontrolle (mit git) oop2012 alfert_antoni

© 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

Page 18: Agiler durch dezentrale versionskontrolle (mit git) oop2012 alfert_antoni

© 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

Page 19: Agiler durch dezentrale versionskontrolle (mit git) oop2012 alfert_antoni

© 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

Page 20: Agiler durch dezentrale versionskontrolle (mit git) oop2012 alfert_antoni

© 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

Page 21: Agiler durch dezentrale versionskontrolle (mit git) oop2012 alfert_antoni

© Zühlke 2012

Klaus Alfert, Jonatan Antoni

Dezentrales SCM im Unternehmen

Lohnt sich der Wechsel?

26. Januar 2012Folie 21 von 40

Page 22: Agiler durch dezentrale versionskontrolle (mit git) oop2012 alfert_antoni

© 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

Page 23: Agiler durch dezentrale versionskontrolle (mit git) oop2012 alfert_antoni

© 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

Page 24: Agiler durch dezentrale versionskontrolle (mit git) oop2012 alfert_antoni

© 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

Page 25: Agiler durch dezentrale versionskontrolle (mit git) oop2012 alfert_antoni

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

Page 26: Agiler durch dezentrale versionskontrolle (mit git) oop2012 alfert_antoni

© 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

Page 27: Agiler durch dezentrale versionskontrolle (mit git) oop2012 alfert_antoni

© 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

Page 28: Agiler durch dezentrale versionskontrolle (mit git) oop2012 alfert_antoni

© 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

Page 29: Agiler durch dezentrale versionskontrolle (mit git) oop2012 alfert_antoni

© Zühlke 2012

TeamRepository

TeamRepository

CH

UK

DE

F

UK

DE

Abkürzungen für geographisch verteilte agile Teams

Page 30: Agiler durch dezentrale versionskontrolle (mit git) oop2012 alfert_antoni

© 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

Page 31: Agiler durch dezentrale versionskontrolle (mit git) oop2012 alfert_antoni

© 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

Page 32: Agiler durch dezentrale versionskontrolle (mit git) oop2012 alfert_antoni

© 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!