Upload
christoph-juengling
View
174
Download
0
Embed Size (px)
DESCRIPTION
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.
Citation preview
Das Problem derzwei Kopfe
Christoph Jungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Das Problem der zwei Kopfe
Christoph Jungling
Agile Monday, 5.5.2014
Das Problem der zwei Kopfe 1
Das Problem derzwei Kopfe
Christoph Jungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Figure: Zwei Kopfe
Das Problem der zwei Kopfe 2
Das Problem derzwei Kopfe
Christoph Jungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
In vier Teile, jedes StuckWie ein kleiner Finger dick.
Das Problem der zwei Kopfe 3
Das Problem derzwei Kopfe
Christoph Jungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Die Theorie
Das Problem der zwei Kopfe 4
Das Problem derzwei Kopfe
Christoph Jungling
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 langer leben, merge haufig aus demDefault Branch in den Feature Branch!
Das Problem der zwei Kopfe 5
Das Problem derzwei Kopfe
Christoph Jungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Grunde
I Parallel Features entwickeln und Bugs fixen
I Verschiedene Entwickler(gruppen) arbeiten anverschiedenen Aufgaben
I “Late Binding”
I Spate Entscheidung, welches Feature in den Hauptzweigeingeht
I Definition of Done!
Das Problem der zwei Kopfe 6
Das Problem derzwei Kopfe
Christoph Jungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Begriffe
I DVCS: Distributed Version Control SystemI Repository: Enthalt die komplette Historie der
EntwicklungI Clone: Komplette Kopie des Repositories (eigentlich
auch “nur” ein Repository)I Branch: (dt. “Zweig”) Paralleler EntwicklungszweigI Benannter Branch: Branch mit einem Namen (darf
gepusht werden)I Unbenannter Branch: Zweiter Kopf auf dem “Default
Branch” (push nicht ohne weiteres moglich)I Rebase: “aufsetzen” eines Zweiges auf einen Kopf
(Achtung: Neuberechnung der Hashwerte)
Das Problem der zwei Kopfe 7
Das Problem derzwei Kopfe
Christoph Jungling
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 imHintergrund. Sie arbeiten zeilenweise.
Das Zusammenfuhren (Mergen) ist leicht
I bei Anderungen an verschiedenen Stellen einer DateiI bei Anderungen in verschiedenen DateienI → Automatisches Mergen moglich
oder aber schwer
I bei Anderungen an der selben StelleI → Automatisches Mergen nicht moglich
Das Problem der zwei Kopfe 8
Das Problem derzwei Kopfe
Christoph Jungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Branching is easy, merging is pain
Erkenntnis:
I Es muss moglichst verhindert werden, dass Anderungenvon mehreren Leuten an den selben Code-Stellengemacht werden (mussen)!
Folgerung:
I Der Aufbau der Software hat einen entscheidendenEinfluss!
I Denn je haufiger gleiche Stellen von verschiedenenLeuten bearbeitet werden mussen, desto haufiger wirdes Merge-Konflikte geben.
Das Problem der zwei Kopfe 9
Das Problem derzwei Kopfe
Christoph Jungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Gegenseitiges Testen
I Nichts gelangt auf das Master-Repository, solange esnicht getestet ist
I Zusammenfuhrung und Test auf einem CloneI Notwendige Korrekturen auf dem CloneI Ruckfuhrung der Korrekturen in das Arbeits-Repository
via Export/UnbundleI Clone loschen
Das Problem der zwei Kopfe 10
Das Problem derzwei Kopfe
Christoph Jungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Das Problem der zwei Kopfe 11
Das Problem derzwei Kopfe
Christoph Jungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Das Problem der zwei Kopfe 12
Das Problem derzwei Kopfe
Christoph Jungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Das Problem der zwei Kopfe 13
Das Problem derzwei Kopfe
Christoph Jungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Ziele
I Software modular gestaltenI “Separation of concerns”I Test first — Test Driven Development
Das Problem der zwei Kopfe 14
Das Problem derzwei Kopfe
Christoph Jungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Agil ist agil ist agil
Das Problem der zwei Kopfe 15
Das Problem derzwei Kopfe
Christoph Jungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Branchen ist unnotig
Agile Entwicklung
I Entweder: Es gibt nur kleine TasksI Oder: Das Team arbeitet immer gemeinsam an einer
TaskI Es gibt nur diesen einen BranchI Es passiert wahrenddessen nichts auf dem Default
Branch
→ Keine Merge-Konflikte bei Ruckfuhrung in den DefaultBranch
Das Problem der zwei Kopfe 16
Das Problem derzwei Kopfe
Christoph Jungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Losungsansatze
I Software moglichst modular aufbauen und haltenI Mergekonflikte werden immer gemeinsam von denen
gelost, die an der Stelle gearbeitet haben
Das Problem der zwei Kopfe 17
Das Problem derzwei Kopfe
Christoph Jungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Software-Empfehlung
I TortoiseHgI kdiff3: 3-Way-Merge, Folder-Diff, Version-Diff
Das Problem der zwei Kopfe 18
Das Problem derzwei Kopfe
Christoph Jungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Merge-Ablauf
Das Problem der zwei Kopfe 19
Das Problem derzwei Kopfe
Christoph Jungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Das Problem der zwei Kopfe 20
Das Problem derzwei Kopfe
Christoph Jungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Das Problem der zwei Kopfe 21
Das Problem derzwei Kopfe
Christoph Jungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Das Problem der zwei Kopfe 22
Das Problem derzwei Kopfe
Christoph Jungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Das Problem der zwei Kopfe 23
Das Problem derzwei Kopfe
Christoph Jungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Das Problem der zwei Kopfe 24
Das Problem derzwei Kopfe
Christoph Jungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Das Problem der zwei Kopfe 25
Das Problem derzwei Kopfe
Christoph Jungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Das Problem der zwei Kopfe 26
Das Problem derzwei Kopfe
Christoph Jungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Patricks Fragen
Das Problem der zwei Kopfe 27
Das Problem derzwei Kopfe
Christoph Jungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
“Sollte nicht nach jedem Commit . . . ?”
I Ein Commit in einem dVCS (Hg, Git) ist nichtgleichbedeutend mit einem solchen in einem cVCS (Svn,Tfs)!
I Mercurial
I Commit = lokalI Push = zum Server
Das Problem der zwei Kopfe 28
Das Problem derzwei Kopfe
Christoph Jungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Mehrere parallele Feature-Branchs
I Integration auf einem Clone, der nach dem I-Testgeloscht wird
I Dies kann auf einem separaten Rechner geschehenI Verantwortungsbereich der Testabteilung?
Das Problem der zwei Kopfe 29
Das Problem derzwei Kopfe
Christoph Jungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Autor
Das Problem der zwei Kopfe 30
Das Problem derzwei Kopfe
Christoph Jungling
Die Theorie
Agil ist agil ist agil
Merge-Ablauf
Patricks Fragen
Autor
Autor
I Christoph JunglingI Twitter: @chjuenglingI Homepage: www.juengling-edv.de
Das Problem der zwei Kopfe 31