3. Recap: Branches
• Unabhängige, parallele Entwicklung
– Z. B. zwei Features
• „Merge“: Entwicklung von einem
Branch auf einen anderen übernehmen
– ... erst, wenn fertig, getestet, abgenommen
– ... in der Reihenfolge, wie es fertig wird
6. Branch Repos („forks“) - 3
• Das kennt ihr schon!
h"p://stevelosh.com/blog/2009/08/a-‐guide-‐to-‐branching-‐in-‐mercurial/
7. Also warum was ändern?
• Öfter mal was Neues
• Geistig fit bleiben
8. Also warum was ändern? (reloaded)
• Keine wiederholten composerDownloads der gleichen Dinge (in
verschiedenen Ordnern)
§ Nur ggf. „delta“ bei unterschiedlichen Deps
• Bei composer-Packages müssen wir es
so machen
§ Einheitlichkeit, Gewöhnung
• Leichter und schneller anzulegen
§ Lokaler Befehl statt Kiln-Aktion
10. Hands on – Setup
• cd ~/Projekte!
• hg clone http://bit.ly/HeAxhr
case-22079-up!
• hg clone case-22079-up case-22079!
• cd case-22079!
11. Hands on – Branches zeigen und
wechseln
• hg branches!
• hg up –c {branchname}!
– „-c“: Abbrechen, falls lokale Änderungen
– Sonst werden Änderungen mit auf den neuen Branch
genommen
– „-C“: Änderungen wegschmeißen und auf sauberen Stand
wechseln
• Branch-Namen:
– „default“
– „you name it“
– Nicht: „tip“ (vergesst „tip“)
19. Kiln – etwas komplizierteres Beispiel
„branch
heads“
auf
„0.1.x“
auf
„default“
20. Kiln - Related
• „Related“ ist für fork-basiertes
Branching gedacht
• Zeigt nur branch-Punkte und Heads
• Hilfreich?
Probiert‘s aus...
21. Lokale fork-Repos
• hg clone ... projekt-A!
• cd projekt-A ; hg up -c
feature_a ; cd ..!
• hg clone ... projekt-B!
• cd projekt-B ; hg up –c
feature_b ; cd ..!
22. Mögliche Probleme?
• Man „sieht“ nicht so direkt, auf
welchem Branch man arbeitet?
• In Kiln nicht ganz so gut unterstützt?
§ Gemeint: Grenzfälle wie Branch-Vergleich etc.
• Nicht zwei Versionen „gleichzeitig“
aktiv?
• Branch-Wechsel bei uncommitted
changes?
27. Branches zusammenführen
• hg up default!
• hg merge feature!
• hg commit -m „...“!
• à feature ist jetzt „inactive“, weil er
keinen Head mehr hat.
28. Branch schließen
• hg up feature!
• hg commit --close-branch -m
„...“!
• à Branch ist jetzt „closed“
• Nur hg branches --closed zeigt
ihn noch