Git Flow

SourceTree installieren

SourceTree kann hier heruntergeladen werden: SourceTree Download.

SourceTree Repository einrichten

Um mit GIT versionierte Projekte in SourceTree verwalten zu können müssen diese erst SourceTree bekannt gemacht werden. Prinzipiell sind bei einem bereits vorhandenen Projekt zwei Wege zu empfehlen: Entweder das neue Herunterladen eines Projektes von einem Server, oder ein bereits vorhandenes lokales Projekt in SourceTree zu registrieren.

Lokales Projekt registrieren

Um ein Projekt dass bereits lokal auf der Festplatte existiert in SourceTree verwalten zu können, öffnet man SourceTree, klickt auf „+ New Repository“ und anschließend auf „Add Existing Local Repository“ (siehe Bild).

sourcetree_addlocal

Anschließend im erscheinenden Finder den Root-Ordner des Projektes auswählen (der auch von GIT verwaltet wird). Hat alles geklappt erscheint das Projekt nun im Projektbrowser von SourceTree, per Doppelklick wird der GIT Dialog für das entsprechende Projekt geöffnet.

Projekt von Server laden

Um ein mit GIT verwaltetes Projekt vom Server zu laden muss SourceTree geöffnet werden, auf „+ New Repository“ geklickt werden und anschließend der Eintrag „Clone from URL“ (siehe Bild) ausgewählt werden.

sourcetree_clonefromurl

Im erscheinenden Dialog müssen nun die URL des Projektes, der lokale Pfad wo es hingespeichert werden soll sowie eine Bezeichnung angegeben werden (siehe nachfolgendes Bild). Die URL von moTrade beispielsweise lautet ssh://builduser@xxx.xxx.xxx/git/moTrade.git, wobei „builduser“ mit dem Benutzernamen zu ersetzen ist. Nach eintragen der URL muss unter Umständen ein Password eingegeben werden.

Screen Shot 2016-05-19 at 15.47.49

Wenn alles geklappt hat erscheint das Projekt nun im Projektbrowser von SourceTree, per Doppelklick wird der GIT Dialog für das entsprechende Projekt geöffnet.

GitFlow initialisieren

Um GitFlow nutzen zu können muss das Projekt für diese Funktion initialisiert werden. Dafür muss es jedoch einen Develop Branch geben. Es kann nun sein, dass dieses Projekt bereits einen solchen Branch enthält, dann wäre in der Commit-Historie ein solcher Branch erkenntlich.

Develop Branch vorhanden

Ist ein Develop Branch vorhanden, dann in der Commit-Historie einen Commit auf dem Develop Branch suchen und auf ihn doppelklicken. Danach sollte in der linken Seitenleiste unter „Branches“ der Develop Branch und der Master Branch zu sehen sein. Der nächste Punkt „Develop Branch nicht vorhanden“ kann nun übersprungen werden.

Develop Branch nicht vorhanden

Handelt es sich um ein völlig leeres Projekt, so muss zunächst ein Commit durchgeführt werden. Dafür am besten das Projekt anlegen an dem später gearbeitet werden soll (zB XCode), und mit den erstellten Dateien in SourceTree einen Commit durchführen.

Nun muss ein neuer Branch angelegt werden. Dazu unter „Repository > Branch…“ navigieren, in den Dialog bei „New Branch:“ „develop“ eintragen und „Create Branch“ klicken (siehe Bild).
newbranch

Initialisieren

Anschließend kann GitFlow initialisiert werden. Dazu nun auf „Repository > Git flow / Hg flow > Initialize Repository…“ klicken, im öffnenden Dialog unter „Production branch:“ „master“ eintragen, und unter „Development branch:“ „develop“. Den Rest unverändert lassen und „OK“ klicken. Nun sollte GitFlow für dieses Repository initialisiert worden sein (siehe Bild).

gitflow_init

Branches

GitFlow verfolgt ein spezielles Modell an verschiedenen Branches, die dazu dienen Struktur in den Entwicklungsprozess zu bringen. Dabei dient jeder Branch einer gewissen Funktion. Die verschiedenen Branches werden in SourceTree links unter „Branches“ (siehe nachfolgendes Bild) angezeigt. Vor dem Arbeitsbeginn sollte der Branch auf dem man arbeiten möchte als aktiver Branch gesetzt werden (auch „auschecken“ genannt), dafür einfach auf den Namen des Branches doppelklicken.

sourcetree_branches

Jeder Branch hat seinen eigenen, aktuellen Stand des Projektes. Sprich: Durch wechseln eines Branches können sich beispielsweise Sourcecodes verändern. Dadurch ergibt sich dass gewisse Branches über längere Zeit unverändert bleiben (was hilfreich zum Testen und Veröffentlichen einer Version ist), während an anderen ständig gearbeitet wird. Folgende Grafik gibt einen Überblick über die bei GitFlow üblichen Branches.

gitflow

Develop Branch

Der Develop Branch ist der allgemeinste Branch. Auf ihm können generelle, kleine Weiterentwicklungen stattfinden. Große neue Features sollten in ihm jedoch nicht implementiert werden, dafür gibt es den Features Branch. Auch Hotfixes sollten nicht hier gelöst werden, allerdings werden die Ergebnisse aus Features und Hotfixes nach deren Abschluss wieder in den Developer Branch gespeist.

Features Branch

Wird ein neues Feature implementiert, so sollte dafür ein neuer Feature Branch erstellt werden. Dieser bleibt solange bestehen bis die Implementierung abgeschlossen wurde, danach wird das fertige Feature in den Developer Branch integriert.

Um einen neuen Feature Branch zu erstellen muss in SourceTree in der Menüleiste auf „Repository > Git Flow / Hg Flow > Start New Feature“ gelickt werden. Im Dialogfenster einen Namen für das Feature eingeben, die restlichen Felder sind korrekt ausgefüllt. Auf „OK“ klicken, und schon sollte der neue Feature Branch aktiv sein.

Zum erfolgreichen Abschließen und Integrieren eines Features in den Developer Branch über die selbe Navigation „Repository > Git Flow / Hg Flow > Finish Feature“ auswählen.

Hotfixes Branch

Hotfixes sind dringende Fehlerbehebungen, die auch schnell an Kunden weitergegeben werden. Hotfixes werden abschließend in den Developer Branch sowie in den Master Branch gespeist.

Um einen neuen Hotfix Branch zu erstellen im SourceTree Menü auf „Repository > Git Flow / Hg Flow > Start New Hotfix“ klicken, Hotfix Namen eingeben und „OK“ klicken. Zum Abschließen eines Hotfixes dieselbe Prozedur: „Repository > Git Flow / Hg Flow > Finish Hotfix“. Hier im Dialog eine Tag Message eingeben (am besten den Namen des Hotfixbranches), sowie „Delete Branch“ aktiviert lassen.

Beta Branch

Der Beta Branch stellt stabilere Versionen dar, beispielsweise wenn eine Veröffentlichung der Software bevorsteht. Ein solcher Beta Branch wird nur auf Bedarf erstellt – wie auch Hotfix- und Feature Branches. Für einen Beta Branch ist der Ablauf sehr ähnlich: Auf „Repository > Git flow / Hg flow > Start New Release…“ klicken, im Dialog eine Releasenummer eingeben und „OK“ klicken. Dadurch wurde der Stand des Developer Branches als Grundlage für den neu erstellten Release Branch verwendet.

Innerhalb des Betabranches sollten nun nur noch kleine Bugfixes commited werden, ist die Version stabil genug kann sie veröffentlicht werden. Dafür über die selbe Navigationshierarchie einfach „Finish Release“ auswählen, und nochmal die Versionsnummer in das Textfeld eingeben. „OK“ klicken, und der Betabranch wird geschlossen. Sein Inhalt wird in den Master und in den Developer Branch geschrieben.

Master Branch

Der Masterbranch stellt vollwertige Versionen der Software dar, die zum Release geeignet sind. In ihm wird nie direkt gearbeitet, es werden nur stabile Versionen von anderen Branches in ihn hineingeschrieben. Soll also eine neue Version zum Beispiel für den App Store veröffentlicht werden, so schreibt der optimale Arbeitsablauf vor dass im Masterbranch der letzte vollständig stabil laufende Sourcecode enthalten ist. Man wechselt also in den Masterbranch und baut von diesem Stand aus die Applikation für die Veröffentlichung.

AdHoc Features

Auf der neuen AdHoc Seite gibt es neben der Changelog-Ansicht auch eine Ansicht für neue Features, welche auch aus dem Changelog gelesen werden.