31
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

Branching-Strategien mit Mercurial

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

Page 1: Branching-Strategien mit Mercurial

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

Page 2: Branching-Strategien mit Mercurial

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

Page 3: Branching-Strategien mit Mercurial

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

Page 4: Branching-Strategien mit Mercurial

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

Page 5: Branching-Strategien mit Mercurial

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

Page 6: Branching-Strategien mit Mercurial

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

Page 7: Branching-Strategien mit Mercurial

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

Page 8: Branching-Strategien mit Mercurial

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

Page 9: Branching-Strategien mit Mercurial

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

Page 10: Branching-Strategien mit Mercurial

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

Page 11: Branching-Strategien mit Mercurial

Das Problem derzwei Kopfe

Christoph Jungling

Die Theorie

Agil ist agil ist agil

Merge-Ablauf

Patricks Fragen

Autor

Das Problem der zwei Kopfe 11

Page 12: Branching-Strategien mit Mercurial

Das Problem derzwei Kopfe

Christoph Jungling

Die Theorie

Agil ist agil ist agil

Merge-Ablauf

Patricks Fragen

Autor

Das Problem der zwei Kopfe 12

Page 13: Branching-Strategien mit Mercurial

Das Problem derzwei Kopfe

Christoph Jungling

Die Theorie

Agil ist agil ist agil

Merge-Ablauf

Patricks Fragen

Autor

Das Problem der zwei Kopfe 13

Page 14: Branching-Strategien mit Mercurial

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

Page 15: Branching-Strategien mit Mercurial

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

Page 16: Branching-Strategien mit Mercurial

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

Page 17: Branching-Strategien mit Mercurial

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

Page 18: Branching-Strategien mit Mercurial

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

Page 19: Branching-Strategien mit Mercurial

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

Page 20: Branching-Strategien mit Mercurial

Das Problem derzwei Kopfe

Christoph Jungling

Die Theorie

Agil ist agil ist agil

Merge-Ablauf

Patricks Fragen

Autor

Das Problem der zwei Kopfe 20

Page 21: Branching-Strategien mit Mercurial

Das Problem derzwei Kopfe

Christoph Jungling

Die Theorie

Agil ist agil ist agil

Merge-Ablauf

Patricks Fragen

Autor

Das Problem der zwei Kopfe 21

Page 22: Branching-Strategien mit Mercurial

Das Problem derzwei Kopfe

Christoph Jungling

Die Theorie

Agil ist agil ist agil

Merge-Ablauf

Patricks Fragen

Autor

Das Problem der zwei Kopfe 22

Page 23: Branching-Strategien mit Mercurial

Das Problem derzwei Kopfe

Christoph Jungling

Die Theorie

Agil ist agil ist agil

Merge-Ablauf

Patricks Fragen

Autor

Das Problem der zwei Kopfe 23

Page 24: Branching-Strategien mit Mercurial

Das Problem derzwei Kopfe

Christoph Jungling

Die Theorie

Agil ist agil ist agil

Merge-Ablauf

Patricks Fragen

Autor

Das Problem der zwei Kopfe 24

Page 25: Branching-Strategien mit Mercurial

Das Problem derzwei Kopfe

Christoph Jungling

Die Theorie

Agil ist agil ist agil

Merge-Ablauf

Patricks Fragen

Autor

Das Problem der zwei Kopfe 25

Page 26: Branching-Strategien mit Mercurial

Das Problem derzwei Kopfe

Christoph Jungling

Die Theorie

Agil ist agil ist agil

Merge-Ablauf

Patricks Fragen

Autor

Das Problem der zwei Kopfe 26

Page 27: Branching-Strategien mit Mercurial

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

Page 28: Branching-Strategien mit Mercurial

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

Page 29: Branching-Strategien mit Mercurial

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

Page 30: Branching-Strategien mit Mercurial

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

Page 31: Branching-Strategien mit Mercurial

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