Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Kristian Köhler Steffen Schluff Version:.0 www.oio.de info@oio.de Gliederung Einleitung Grundbegriffe Workflows Demo Fazit 2
Gliederung Einleitung Grundbegriffe Workflows Demo Fazit 3 DVCS Historie (Auszug) Bazaar Mercurial Bit Keeper GNU arch Darcs Monotone Git 998 2000 2002 2004 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 5 Gliederung Einleitung Grundbegriffe Workflows Demo Fazit 6 3
Subversion und der einsame Entwickler SVN diff, cat, 7 DVCS und der einsame Entwickler DVCS diff, cat, 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 9 Subversion und viele Entwickler Central SVN update update update Carol s Clients / s 0 5
DVCS und viele Entwickler () Clients / s DVCS DVCS Carol s DVCS diff, cat, diff, cat, diff, cat, Carol s DVCS und viele Entwickler (2) Clients / s DVCS DVCS Carol s DVCS update update update Carol s 2 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 3 In ein DVCS Projekt einsteigen () clone DVCS 4 7
In ein DVCS Projekt einsteigen (2) clone DVCS DVCS 5 In eigenem entwickeln DVCS DVCS 6 8
Änderungen an zentrales Repo übergeben 2 push DVCS DVCS 7 Änderungen aus zentralem Repo übernehmen 2 push 3 pull DVCS DVCS 8 9
Änderungen in eigene übernehmen 2 push 3 pull DVCS DVCS update 4 9 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 Ä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 20 0
Zentralisiertes Arbeiten mit Revisionen Kohle + Bier Kohle Bier Kohle + Salat Bier + Fleisch Salat Kohle Bier Salat Fleisch r r2 r3 r4 Alice Bob Carol 2 Dezentrales Arbeiten mit Änderungen Kohle Central Kohle Bier Salat Fleisch + Bier + Salat Kohle c + Fleisch Kohle Alice c3 Carol + Bier c2 Kohle + Fleisch Bob c2 + Salat c + Salat + Bier 22
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 23 In eigenem entwickeln (again) DVCS DVCS 2 24 2
Beide Änderungen an zentrales Repo senden () 3 push DVCS DVCS 2 25 Beide Änderungen an zentrales Repo senden (2) 3 push 4 push DVCS DVCS 2 26 3
Zweite Änderung aus zentralem Repo übernehmen 3 push 4 pull DVCS DVCS 2 27 Änderungen mergen 3 push 4 pull DVCS DVCS 2 ci merge 5 28 4
Änderungen mergen und ten 3 push 4 pull DVCS DVCS 2 ci merge 5 ci 6 29 Merge an zentrales Repo senden 3 push 4 pull 7 push DVCS DVCS 2 ci merge 5 ci 6 30 5
ODER Änderungen (vorläufig) ignorieren 3 push 4 pull DVCS DVCS 2 5 3 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? 32 6
Gliederung Einleitung Grundbegriffe Workflows Demo Fazit 33 Subversion-Style Workflow Shared push/pull Clients / s 34 7
Integration Manager Workflow (Gatekeeper) push Integration Manager Public Public Public push Integration Manager push push 35 Dictator and Lieutenants Workflow Public Dictator Lieutenant Public Lieutenant Public Public Public Public Public 36 8
Kombinierte Workflows Central (Subversion) /update DVCS DVCS 37 Gliederung Einleitung Grundbegriffe Workflows Demo Fazit 38 9
Demo Demo DVCS 39 Gliederung Einleitung Grundbegriffe Workflows Demo Fazit 40 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! 4 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) 42 2
Mehr von OIO zum Thema... () 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 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 44 22
Ihr Sprecher Kristian Köhler Software-Architekt, Trainer, Berater http://www.kkoehler.com Schwerpunkte Architekturen Java EE Backend Technologien 45 Ihr Sprecher Steffen Schluff Trainer, Berater, Entwickler Schwerpunkte Open Source Tooling Build Management Refactoring 46 23
?? Fragen??? Orientation Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de?? 47 Vielen Dank für ihre Aufmerksamkeit! Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de 24