Dieser Kurzvortrag geht der Frage nach, welche Branching-Strategien machbar, sinnvoll und empfehlenswert sind und wovon dies abhängig sein kann.
Diese Präsentation wurde mit Markdown und LaTeX-Beamer erstellt.
1. Das Problem der
zwei K¨opfe
Christoph J¨ungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Das Problem der zwei K¨opfe
Christoph J¨ungling
Agile Monday, 5.5.2014
Das Problem der zwei K¨opfe 1
2. Das Problem der
zwei K¨opfe
Christoph J¨ungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Figure: Zwei K¨opfe
Das Problem der zwei K¨opfe 2
3. Das Problem der
zwei K¨opfe
Christoph J¨ungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
In vier Teile, jedes St¨uck
Wie ein kleiner Finger dick.
Das Problem der zwei K¨opfe 3
4. Das Problem der
zwei K¨opfe
Christoph J¨ungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Die Theorie
Das Problem der zwei K¨opfe 4
5. Das Problem der
zwei K¨opfe
Christoph J¨ungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Feature-Branch-Strategien in Agilen Teams
Regeln
1. Tu es nicht!
2. Wenn es doch sein muss, halte die Branches kurz
(zeitlich)!
3. Wenn sie doch l¨anger leben, merge h¨aufig aus dem
Default Branch in den Feature Branch!
Das Problem der zwei K¨opfe 5
6. Das Problem der
zwei K¨opfe
Christoph J¨ungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Gr¨unde
Parallel Features entwickeln und Bugs fixen
Verschiedene Entwickler(gruppen) arbeiten an
verschiedenen Aufgaben
“Late Binding”
Sp¨ate Entscheidung, welches Feature in den Hauptzweig
eingeht
Definition of Done!
Das Problem der zwei K¨opfe 6
7. Das Problem der
zwei K¨opfe
Christoph J¨ungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Begriffe
DVCS: Distributed Version Control System
Repository: Enth¨alt die komplette Historie der
Entwicklung
Clone: Komplette Kopie des Repositories (eigentlich
auch “nur” ein Repository)
Branch: (dt. “Zweig”) Paralleler Entwicklungszweig
Benannter Branch: Branch mit einem Namen (darf
gepusht werden)
Unbenannter Branch: Zweiter Kopf auf dem “Default
Branch” (push nicht ohne weiteres m¨oglich)
Rebase: “aufsetzen” eines Zweiges auf einen Kopf
(Achtung: Neuberechnung der Hashwerte)
Das Problem der zwei K¨opfe 7
8. Das Problem der
zwei K¨opfe
Christoph J¨ungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Branching is easy, merging is pain
Die Unix-Tools diff und patch ¨ubernehmen die Arbeit im
Hintergrund. Sie arbeiten zeilenweise.
Das Zusammenf¨uhren (Mergen) ist leicht
bei ¨Anderungen an verschiedenen Stellen einer Datei
bei ¨Anderungen in verschiedenen Dateien
→ Automatisches Mergen m¨oglich
oder aber schwer
bei ¨Anderungen an der selben Stelle
→ Automatisches Mergen nicht m¨oglich
Das Problem der zwei K¨opfe 8
9. Das Problem der
zwei K¨opfe
Christoph J¨ungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Branching is easy, merging is pain
Erkenntnis:
Es muss m¨oglichst verhindert werden, dass ¨Anderungen
von mehreren Leuten an den selben Code-Stellen
gemacht werden (m¨ussen)!
Folgerung:
Der Aufbau der Software hat einen entscheidenden
Einfluss!
Denn je h¨aufiger gleiche Stellen von verschiedenen
Leuten bearbeitet werden m¨ussen, desto h¨aufiger wird
es Merge-Konflikte geben.
Das Problem der zwei K¨opfe 9
10. Das Problem der
zwei K¨opfe
Christoph J¨ungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Gegenseitiges Testen
Nichts gelangt auf das Master-Repository, solange es
nicht getestet ist
Zusammenf¨uhrung und Test auf einem Clone
Notwendige Korrekturen auf dem Clone
R¨uckf¨uhrung der Korrekturen in das Arbeits-Repository
via Export/Unbundle
Clone l¨oschen
Das Problem der zwei K¨opfe 10
11. Das Problem der
zwei K¨opfe
Christoph J¨ungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Das Problem der zwei K¨opfe 11
12. Das Problem der
zwei K¨opfe
Christoph J¨ungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Das Problem der zwei K¨opfe 12
13. Das Problem der
zwei K¨opfe
Christoph J¨ungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Das Problem der zwei K¨opfe 13
14. Das Problem der
zwei K¨opfe
Christoph J¨ungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Ziele
Software modular gestalten
“Separation of concerns”
Test first — Test Driven Development
Das Problem der zwei K¨opfe 14
15. Das Problem der
zwei K¨opfe
Christoph J¨ungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Agil ist agil ist agil
Das Problem der zwei K¨opfe 15
16. Das Problem der
zwei K¨opfe
Christoph J¨ungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Branchen ist unn¨otig
Agile Entwicklung
Entweder: Es gibt nur kleine Tasks
Oder: Das Team arbeitet immer gemeinsam an einer
Task
Es gibt nur diesen einen Branch
Es passiert w¨ahrenddessen nichts auf dem Default
Branch
→ Keine Merge-Konflikte bei R¨uckf¨uhrung in den Default
Branch
Das Problem der zwei K¨opfe 16
17. Das Problem der
zwei K¨opfe
Christoph J¨ungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
L¨osungsans¨atze
Software m¨oglichst modular aufbauen und halten
Mergekonflikte werden immer gemeinsam von denen
gel¨ost, die an der Stelle gearbeitet haben
Das Problem der zwei K¨opfe 17
18. Das Problem der
zwei K¨opfe
Christoph J¨ungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Software-Empfehlung
TortoiseHg
kdiff3: 3-Way-Merge, Folder-Diff, Version-Diff
Das Problem der zwei K¨opfe 18
19. Das Problem der
zwei K¨opfe
Christoph J¨ungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Merge-Ablauf
Das Problem der zwei K¨opfe 19
20. Das Problem der
zwei K¨opfe
Christoph J¨ungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Das Problem der zwei K¨opfe 20
21. Das Problem der
zwei K¨opfe
Christoph J¨ungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Das Problem der zwei K¨opfe 21
22. Das Problem der
zwei K¨opfe
Christoph J¨ungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Das Problem der zwei K¨opfe 22
23. Das Problem der
zwei K¨opfe
Christoph J¨ungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Das Problem der zwei K¨opfe 23
24. Das Problem der
zwei K¨opfe
Christoph J¨ungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Das Problem der zwei K¨opfe 24
25. Das Problem der
zwei K¨opfe
Christoph J¨ungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Das Problem der zwei K¨opfe 25
26. Das Problem der
zwei K¨opfe
Christoph J¨ungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Das Problem der zwei K¨opfe 26
27. Das Problem der
zwei K¨opfe
Christoph J¨ungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Patricks Fragen
Das Problem der zwei K¨opfe 27
28. Das Problem der
zwei K¨opfe
Christoph J¨ungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
“Sollte nicht nach jedem Commit . . . ?”
Ein Commit in einem dVCS (Hg, Git) ist nicht
gleichbedeutend mit einem solchen in einem cVCS (Svn,
Tfs)!
Mercurial
Commit = lokal
Push = zum Server
Das Problem der zwei K¨opfe 28
29. Das Problem der
zwei K¨opfe
Christoph J¨ungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Mehrere parallele Feature-Branchs
Integration auf einem Clone, der nach dem I-Test
gel¨oscht wird
Dies kann auf einem separaten Rechner geschehen
Verantwortungsbereich der Testabteilung?
Das Problem der zwei K¨opfe 29
30. Das Problem der
zwei K¨opfe
Christoph J¨ungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Autor
Das Problem der zwei K¨opfe 30
31. Das Problem der
zwei K¨opfe
Christoph J¨ungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Autor
Christoph J¨ungling
Twitter: @chjuengling
Homepage: www.juengling-edv.de
Das Problem der zwei K¨opfe 31