Brauche ich ein DVCS?

Brauche ich ein DVCS? Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 1.0 Kristian Köhler Steffen Schluff www.oio.de info@o...
Author: Käte Bretz
4 downloads 2 Views 645KB Size
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