Brauche ich ein DVCS?
Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim
Version: 1.0
Kristian Köhler Steffen Schluff
www.oio.de
[email protected]
Gliederung
•
Einleitung
•
Grundbegriffe
•
Workflows
•
Demo
•
Fazit
© 2010 Orientation in Objects GmbH
Brauche ich ein DVCS?
2
1
Gliederung
•
Einleitung
•
Grundbegriffe
•
Workflows
•
Demo
•
Fazit
© 2010 Orientation in Objects GmbH
Brauche ich ein DVCS?
3
DVCS Historie (Auszug)
Bazaar
Mercurial Bit Keeper
1998
GNU arch
2000
© 2010 Orientation in Objects GmbH
Darcs
2002
Monotone
Git
2004
Brauche ich ein DVCS?
2006
4
2
Unsere VCS Historie
•
Repräsentativ für viele Entwickler, die Open Source Tools nutzen
•
Kein Änderung war zwingend notwendig, aber…
•
… wer einmal gewechselt hat, will nicht mehr zurück
Git
RCS
CVS
SVN Mercurial
© 2010 Orientation in Objects GmbH
Brauche ich ein DVCS?
5
Brauche ich ein DVCS?
6
Gliederung
•
Einleitung
•
Grundbegriffe
•
Workflows
•
Demo
•
Fazit
© 2010 Orientation in Objects GmbH
3
Subversion und der einsame Entwickler
Alice‘s SVN Repository
Server
commit Netzwerk diff, cat, …
Alice‘s Working Copy
© 2010 Orientation in Objects GmbH
Brauche ich ein DVCS?
Client / Desktop
7
DVCS und der einsame Entwickler Netzwerk
Alice‘s DVCS Repository
commit
Client / Desktop diff, cat, …
Alice‘s Working Copy
© 2010 Orientation in Objects GmbH
Brauche ich ein DVCS?
8
4
Der einsame Entwickler
•
Kein paralleles Arbeiten mit anderen Kollegen
•
Geringe Unterschiede zwischen SVN und DVCS im Befehlssatz
•
Bei DVCS immer alles auf einem PC
•
Setup für DVCS (argumentativ) leichter
•
DVCS Repo „lebt“ im Unterverzeichnis der Working Copy
© 2010 Orientation in Objects GmbH
Brauche ich ein DVCS?
9
Subversion und viele Entwickler Server Central SVN Repository commit
Netzwerk update
Alice‘s Working Copy
update
update
Bob‘s Working Copy
Carol‘s Working Copy
Clients / Desktops © 2010 Orientation in Objects GmbH
Brauche ich ein DVCS?
10
5
DVCS und viele Entwickler (1) Netzwerk
Clients / Desktops Alice‘s DVCS Repository commit
Bob‘s DVCS Repository
Carol‘s DVCS Repository
commit
diff, cat, …
Alice‘s Working Copy
commit
diff, cat, …
diff, cat, …
Bob‘s Working Copy
© 2010 Orientation in Objects GmbH
Carol‘s Working Copy
Brauche ich ein DVCS?
11
DVCS und viele Entwickler (2)
Central DVCS Repository
Server
Netzwerk
Clients / Desktops
Alice‘s DVCS Repository commit
Bob‘s DVCS Repository
Carol‘s DVCS Repository
commit update
Alice‘s Working Copy © 2010 Orientation in Objects GmbH
commit update
Bob‘s Working Copy
update
Carol‘s Working Copy
Brauche ich ein DVCS?
12
6
Viele Entwickler
•
Jeder Entwickler hat eigenes DVCS Repo
•
Daher Idee eines zusätzlichen zentralen DVCS Repos
•
Zentrales DVCS Repo ähnlich zu SVN Ansatz
•
Protokoll notwendig für Kommunikation zwischen DVCS Repos
© 2010 Orientation in Objects GmbH
Brauche ich ein DVCS?
13
In ein DVCS Projekt einsteigen (1) Central DVCS Repository
Server
Netzwerk clone
Alice‘s DVCS Repository Client / Desktop Alice‘s Working Copy
© 2010 Orientation in Objects GmbH
Brauche ich ein DVCS?
14
7
In ein DVCS Projekt einsteigen (2) Central DVCS Repository
Server
Netzwerk clone
Alice‘s DVCS Repository
Bob‘s DVCS Repository Client / Desktop
Alice‘s Working Copy
Bob‘s Working Copy
© 2010 Orientation in Objects GmbH
Brauche ich ein DVCS?
15
In eigenem Repository entwickeln Central DVCS Repository
Server
Netzwerk
Alice‘s DVCS Repository
1
Bob‘s DVCS Repository
commit
Alice‘s Working Copy
© 2010 Orientation in Objects GmbH
Client / Desktop Bob‘s Working Copy
Brauche ich ein DVCS?
16
8
Änderungen an zentrales Repo übergeben Central DVCS Repository
2
Server
push
Netzwerk
Alice‘s DVCS Repository
1
Bob‘s DVCS Repository
commit
Client / Desktop
Alice‘s Working Copy
Bob‘s Working Copy
© 2010 Orientation in Objects GmbH
Brauche ich ein DVCS?
17
Änderungen aus zentralem Repo übernehmen Central DVCS Repository
2
push
Netzwerk
Alice‘s DVCS Repository
1
Server
3 pull
Bob‘s DVCS Repository
commit
Alice‘s Working Copy
© 2010 Orientation in Objects GmbH
Client / Desktop Bob‘s Working Copy
Brauche ich ein DVCS?
18
9
Änderungen in eigene Working Copy übernehmen Central DVCS Repository
2
push
Netzwerk
Alice‘s DVCS Repository
1
commit
Alice‘s Working Copy
© 2010 Orientation in Objects GmbH
Server
3 pull
Bob‘s DVCS Repository update
4
Client / Desktop
Bob‘s Working Copy
Brauche ich ein DVCS?
19
Changeset basiertes Arbeiten
•
Eigener Befehlssatz für Abgleich zwischen DVCS Repos – clone, push, pull, …
•
Abgleich basiert auf Änderungen nicht auf Dokumentversionen – Es existiert per se keine verbindliche Dokumentversion
•
In SVN „ implicit changeset : if you compare tree N with tree N−1“ – Änderung (Changeset) ist der Unterschied zwischen zwei Versionen
•
Änderungen in einem DVCS sind wie Overhead Folien – Mehre übereinander gelegt ergeben ein Dokument
•
Änderungen müssen eindeutig adressierbar sein – Unterscheidung zwischen lokalen und globalen Namen
© 2010 Orientation in Objects GmbH
Brauche ich ein DVCS?
20
10
Zentralisiertes Arbeiten mit Revisionen
Kohle
Kohle Bier
+ Bier
r1
+ Salat
r2
Alice
Kohle Bier Salat
+ Fleisch
Kohle Bier Salat Fleisch
r3
r4
Bob
© 2010 Orientation in Objects GmbH
Carol
Brauche ich ein DVCS?
21
Dezentrales Arbeiten mit Änderungen Kohle Bier Salat Fleisch
Kohle
Central + Bier + Salat
c1
Kohle
Kohle
+ Fleisch
c3
Alice c2
+ Bier
Kohle
Bob
Carol + Fleisch
c2
+ Salat
+ Salat
c1 © 2010 Orientation in Objects GmbH
+ Bier Brauche ich ein DVCS?
22
11
Viele Köche verderben den Brei
•
Bisher wurde einfacher Fall ohne parallele Entwicklung betrachtet – Nur ein Entwickler nimmt Änderungen vor und verteilt diese
•
Was ist wenn mehrere Entwickler „gleichzeitig“ ändern? – D.h. mehrere Änderungen bezogen auf den gleichen Ausgangsstand
•
Bei SVN führt dies zu einem Konflikt, der „Merging“ benötigt – Sonst können keine Änderungen mehr an das Repo übergeben werden
© 2010 Orientation in Objects GmbH
Brauche ich ein DVCS?
23
In eigenem Repository entwickeln (again) Central DVCS Repository
Server
Netzwerk
Alice‘s DVCS Repository
1
commit
Alice‘s Working Copy
© 2010 Orientation in Objects GmbH
Bob‘s DVCS Repository
2
commit
Client / Desktop
Bob‘s Working Copy
Brauche ich ein DVCS?
24
12
Beide Änderungen an zentrales Repo senden (1) Central DVCS Repository
3
Server
push
Netzwerk
Alice‘s DVCS Repository
1
commit
Bob‘s DVCS Repository
2
Alice‘s Working Copy
commit
Client / Desktop
Bob‘s Working Copy
© 2010 Orientation in Objects GmbH
Brauche ich ein DVCS?
25
Beide Änderungen an zentrales Repo senden (2) Central DVCS Repository
3
Server
4
push
push
Netzwerk
Alice‘s DVCS Repository
1
commit
Alice‘s Working Copy
© 2010 Orientation in Objects GmbH
Bob‘s DVCS Repository
2
commit
Client / Desktop
Bob‘s Working Copy
Brauche ich ein DVCS?
26
13
Zweite Änderung aus zentralem Repo übernehmen Central DVCS Repository
3
Server
4 pull
push
Netzwerk
Alice‘s DVCS Repository
1
Bob‘s DVCS Repository
commit
commit
2
Alice‘s Working Copy
Client / Desktop
Bob‘s Working Copy
© 2010 Orientation in Objects GmbH
Brauche ich ein DVCS?
27
Änderungen mergen … Central DVCS Repository
3
Server
4 pull
push
Netzwerk
Alice‘s DVCS Repository
1
commit
Alice‘s Working Copy
© 2010 Orientation in Objects GmbH
Bob‘s DVCS Repository
2
ci
merge
5
Client / Desktop
Bob‘s Working Copy
Brauche ich ein DVCS?
28
14
Änderungen mergen und committen Central DVCS Repository
3
Server
4 pull
push
Netzwerk
Alice‘s DVCS Repository
1
commit
Bob‘s DVCS Repository
2
ci
Alice‘s Working Copy
merge
5
ci
6
Client / Desktop
Bob‘s Working Copy
© 2010 Orientation in Objects GmbH
Brauche ich ein DVCS?
29
Merge an zentrales Repo senden Central DVCS Repository
3
Server
4 pull
push
Netzwerk
Alice‘s DVCS Repository
1
commit
Alice‘s Working Copy
© 2010 Orientation in Objects GmbH
7
push
Bob‘s DVCS Repository
2
ci
merge
5
ci
6
Client / Desktop
Bob‘s Working Copy
Brauche ich ein DVCS?
30
15
ODER Änderungen (vorläufig) ignorieren Central DVCS Repository
3
Server
4 pull
push
Netzwerk
Alice‘s DVCS Repository
1
commit
Alice‘s Working Copy
© 2010 Orientation in Objects GmbH
Bob‘s DVCS Repository
2
commit
commit
5
Client / Desktop
Bob‘s Working Copy
Brauche ich ein DVCS?
31
Konflikte und Branches
•
Prämisse: Branches / mehrere Heads sind kein „grosses Ding“ – DVCS besitzen gut funktionierendes Mergetracking
•
Branches können lokal leicht entstehen – Explizites Branchen, Commit auf alte Version
•
Branches können durch „pull“ entstehen – Vermengung eigener und fremder Changesets – Änderungen / Branches landen im lokalen Repo nicht in der WC
•
Branches sind aber nicht überall gewünscht – In zentralem Repo eher nicht gewünscht – Wer darf auf welchem Repo „push“ und „pull“ ausführen?
© 2010 Orientation in Objects GmbH
Brauche ich ein DVCS?
32
16
Gliederung
•
Einleitung
•
Grundbegriffe
•
Workflows
•
Demo
•
Fazit
© 2010 Orientation in Objects GmbH
Brauche ich ein DVCS?
33
Subversion-Style Workflow Server Shared Repository
push/pull
Netzwerk
Developer Private Repo
Developer Private Repo
Developer Private Repo
Clients / Desktops © 2010 Orientation in Objects GmbH
Brauche ich ein DVCS?
34
17
Integration Manager Workflow (Gatekeeper) Central DVCS Repository
push
Integration Manager Public Repository
Developer Public Repository
Developer Public Repository
push push
Integration Manager Private Repo
Developer Private Repo
© 2010 Orientation in Objects GmbH
push Developer Private Repo
Brauche ich ein DVCS?
35
Dictator and Lieutenants Workflow Developer Public Repository
Dictator
Developer Private Repo
Lieutenant Developer Public Repository
Central DVCS Repository
Lieutenant Developer Public Repository
Developer Private Repo
Developer Private Repo
Developer Public Repository
Developer Public Repository
Developer Public Repository
Developer Public Repository
Developer Private Repo
Developer Private Repo
Developer Private Repo
Developer Private Repo
© 2010 Orientation in Objects GmbH
Brauche ich ein DVCS?
36
18
Kombinierte Workflows Central Repository (Subversion)
commit/update
Developer Working Copy
Developer Working Copy
© 2010 Orientation in Objects GmbH
Developer DVCS Repository
Developer DVCS Repository
Developer Working Copy
Developer Working Copy
Brauche ich ein DVCS?
37
Brauche ich ein DVCS?
38
Gliederung
•
Einleitung
•
Grundbegriffe
•
Workflows
•
Demo
•
Fazit
© 2010 Orientation in Objects GmbH
19
Demo
•
Demo „DVCS“
© 2010 Orientation in Objects GmbH
Brauche ich ein DVCS?
39
Brauche ich ein DVCS?
40
Gliederung
•
Einleitung
•
Grundbegriffe
•
Workflows
•
Demo
•
Fazit
© 2010 Orientation in Objects GmbH
20
Fazit
•
Flexiblere Workflows möglich aber nicht zwingend – Auch in Kombination mit zentralem VCS
•
Bessere Entwicklerkooperation und -isolation – Branches und lokales Arbeiten – Ad-hoc Zusammenarbeit und leichtes Merging
•
Lernkurve nicht so steil wie befürchtet
•
Toolunterstützung durch Drittanbieter ist erst im Entstehen
•
Brauch ich es? - Nein, ich will es!
© 2010 Orientation in Objects GmbH
Brauche ich ein DVCS?
41
If you remember one thing
„Who the F*** cares? Use what YOU like, not what someone on the internet tells you to.“
(http://www.gitvsmercurial.com)
© 2010 Orientation in Objects GmbH
Brauche ich ein DVCS?
42
21
Mehr von OIO zum Thema... (1)
•
Schulung: Versionsverwaltung mit Subversion – http://www.oio.de/subversion-svn-schulung.htm
•
Schulung: Versionsverwaltung mit CVS – http://www.oio.de/seminar/open-source/cvs-schulung.htm
•
Vortrag OOP 2006: Subversion - Ein besseres CVS? – http://www.oio.de/m/konf/oop2006/SVN.pdf
•
Referenz: Open Source Support: Einsatzkonzept für Subversion – http://www.oio.de/referenzen/competence-center/referenz-beratungopen-source-support-svn-subversion.htm
© 2010 Orientation in Objects GmbH
Brauche ich ein DVCS?
43
Mehr von OIO zum Thema... (2)
•
Beratung zu Open Source Tools – http://www.oio.de/beratung-consulting/open-sourcesoftware/tools/index.htm
•
Referenz: Jumpstart: Webbasierte Informations- und Abrechnungsplattform im Gesundheitswesen – http://www.oio.de/referenzen/competence-center/coaching-beratungwebbasierte-informations-und-abrechnungsplattform-imgesundheitswesen.htm
•
Schulung zu Apache Ant und Maven – http://www.oio.de/seminar/open-source/ant-schulung.htm – http://www.oio.de/maven-schulung.htm
© 2010 Orientation in Objects GmbH
Brauche ich ein DVCS?
44
22
Ihr Sprecher
Kristian Köhler Software-Architekt, Trainer, Berater http://www.kkoehler.com
Schwerpunkte Architekturen Java EE Backend Technologien
© 2010 Orientation in Objects GmbH
Brauche ich ein DVCS?
45
Ihr Sprecher
Steffen Schluff Trainer, Berater, Entwickler
Schwerpunkte Open Source Tooling Build Management Refactoring
© 2010 Orientation in Objects GmbH
Brauche ich ein DVCS?
46
23
? ? ? ? ? ? ?
?
Fragen ?
Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de
[email protected]
47
Vielen Dank für ihre Aufmerksamkeit !
Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de
[email protected]
24