Download - 20131028 named braches
Named Branches
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
Branch Repos („forks“)
Branch Repos („forks“) - 2
• Getrennte Repos in getrennten Verzeichnissen
Branch Repos („forks“) - 3
• Das kennt ihr schon!
h"p://stevelosh.com/blog/2009/08/a-‐guide-‐to-‐branching-‐in-‐mercurial/
Also warum was ändern?
• Öfter mal was Neues • Geistig fit bleiben
Also warum was ändern? (reloaded)
• Keine wiederholten composer-Downloads 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
Enter named branches
h"p://stevelosh.com/blog/2009/08/a-‐guide-‐to-‐branching-‐in-‐mercurial/
Hands on – Setup • cd ~/Projekte !• hg clone http://bit.ly/HeAxhr case-22079-up !
• hg clone case-22079-up case-22079 !• cd case-22079 !
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“)
PhpStorm - Branches
Hands on – Commit auf Branch
Situa>onal awareness?
Hands on – Push it, baby
„-‐b .“ meint „mein aktueller Branch“
Hands on - Pull
Kiln – Branches
Kiln – Eindimensional, bi!e
Kiln – History per-branch
Kiln – etwas komplizierteres Beispiel
auf „default“
auf „0.1.x“
„branch heads“
Kiln - Related
• „Related“ ist für fork-basiertes Branching gedacht • Zeigt nur branch-Punkte und Heads • Hilfreich?
Probiert‘s aus...
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 .. !
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?
Take-outs für heute • Branch-Wechsel macht ggf. „phlough install“ notwendig
• hg up -c {branchname} !• hg branches!• hg [in|out|push|pull] -b . !– --new-branch, falls neuer Branch erzeugt/
merged • Konventionen: – Feature Branches „123_featuretitel “ – Try-Branches: „try_{initials}_{case|timestamp}_desc“ (Achtung: Permanent und global)
Take-outs (2)
• hg branch {neuer_name} !• hg merge {anderer_branch} + hg commit!• hg ci --close-branch!• hg push -b . --new-branch (bei
Bedarf)
Anhang: Fortgeschri!ene Themen
• Braches anlegen • Cross-Branch merges (spooky!) • Zweige schließen
Branch anlegen
Branches zusammenführen
• hg up default!• hg merge feature!• hg commit -m „...“ !• à feature ist jetzt „inactive“, weil er
keinen Head mehr hat.
Branch schließen
• hg up feature!• hg commit --close-branch -m „...“ !• à Branch ist jetzt „closed“ • Nur hg branches --closed zeigt
ihn noch