Git Flow

"A collection of Git extensions to provide high-level repository operations for Vincent Driessen's branching model."

Alexander Bogomolov / @abogomolov

Branching model?

master & develop

Quelle: https://blog.seibert-media.net/blog/2014/03/31/git-workflows-der-gitflow-workflow-teil-1/

feature

Quelle: https://blog.seibert-media.net/blog/2014/03/31/git-workflows-der-gitflow-workflow-teil-1/

release

Quelle: https://blog.seibert-media.net/blog/2014/03/31/git-workflows-der-gitflow-workflow-teil-1/

hotfix

Quelle: https://blog.seibert-media.net/blog/2014/03/31/git-workflows-der-gitflow-workflow-teil-1/

Abnahme durch PMs?

  • Alternativer Branch: sprint/[name]
  • Beinhaltet alle offenen Features
  • Erhält keine direkten Commits!
  • Kann von jedem bespielt und ausgerollt werden

Installation

Mac (Homebrew)

$ brew install git-flow-avh

Mac (Macports)

$ port install git-flow-avh

Linux (Debian)

$ apt-get install git-flow

PhpStorm

Initialisierung

Terminal

$ git flow init

Initialisierung

PhpStorm

Neues Ticket (EOS-999)

Feature starten

$ git flow feature start EOS-999-Kurze-Beschreibung

Alias für

$ git checkout -b feature/EOS-999-Kurze-Beschreibung

Ticket bearbeitet

$ git flow feature publish EOS-999-Kurze-Beschreibung

Alias für

$ git push origin feature/EOS-999-Kurze-Beschreibung

Ticket in QS

$ git flow feature track EOS-999-Kurze-Beschreibung

Alias für

$ git checkout -b feature/EOS-999-Kurze-Beschreibung origin/feature/EOS-999-Kurze-Beschreibung

Ticket dem PM zeigen

Leichte Abweichung vom Git Flow mit dem sprint/xy Branch

  • Beinhaltet alle offenen Features des Sprints
  • An diesem Branch wir nicht gearbeitet
  • Feature-Branche bleiben offen
  • Branch wird auf DEV/QS ausgerollt
  • Branch wird nach Sprintende kommentarlos gelöscht

Ticket hat QS nicht bestanden

  • Es wird einfach an dem Feature weiter gearbeitet
  • Anschließend wieder mit dem Punkt "Ticket bearbeitet" weitermachen

Ticket QS bestanden


$ git flow feature finish EOS-999-Kurze-Beschreibung
$ git push
      

Release

Eine neue Version "taggen"

Release starten

$ git flow release start 1.5.0
  • Releasename entspricht der gewünschten Version
  • Release auf QS ausrollen (falls vorhanden)
  • Testen, testen, testen

Release fehlerhaft

Einfach im Release-Branch fixen

Release ok


$ git flow release finish 1.5.0
$ git push --follow-tags
$ git checkout master
$ git push --follow-tags
      

Deploy

Literatur

Fragen?

Vielen Dank!