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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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

Branching-Strategien mit Mercurial

  • 1.
    Das Problem der zweiK¨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 zweiK¨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 zweiK¨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 zweiK¨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 zweiK¨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 zweiK¨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 zweiK¨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 zweiK¨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 zweiK¨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 zweiK¨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 zweiK¨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 zweiK¨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 zweiK¨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 zweiK¨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 zweiK¨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 zweiK¨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 zweiK¨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 zweiK¨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 zweiK¨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 zweiK¨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 zweiK¨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 zweiK¨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 zweiK¨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 zweiK¨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 zweiK¨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 zweiK¨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 zweiK¨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 zweiK¨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 zweiK¨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 zweiK¨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 zweiK¨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