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 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
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
„branch	
  heads“	
  

auf	
  „0.1.x“	
  

auf	
  „default“	
  
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

20131028 named braches

  • 1.
  • 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
  • 4.
  • 5.
    Branch Repos („forks“)- 2 •  Getrennte Repos in getrennten Verzeichnissen
  • 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
  • 9.
  • 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“)
  • 12.
  • 13.
    Hands on –Commit auf Branch Situa>onal  awareness?  
  • 14.
    Hands on –Push it, baby „-­‐b  .“  meint  „mein   aktueller  Branch“  
  • 15.
  • 16.
  • 17.
  • 18.
    Kiln – Historyper-branch
  • 19.
    Kiln – etwaskomplizierteres 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 •  hgclone ... 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?
  • 23.
    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)
  • 24.
    Take-outs (2) •  hgbranch {neuer_name}! •  hg merge {anderer_branch} + hg commit! •  hg ci --close-branch! •  hg push -b . --new-branch (bei Bedarf)
  • 25.
    Anhang: Fortgeschri eneThemen •  Braches anlegen •  Cross-Branch merges (spooky!) •  Zweige schließen
  • 26.
  • 27.
    Branches zusammenführen •  hgup default! •  hg merge feature! •  hg commit -m „...“! •  à feature ist jetzt „inactive“, weil er keinen Head mehr hat.
  • 28.
    Branch schließen •  hgup feature! •  hg commit --close-branch -m „...“! •  à Branch ist jetzt „closed“ •  Nur hg branches --closed zeigt ihn noch