GIT
GRIS wird bisher in kleiner Runde entwickelt und nutzt dementsprechend nur zwei Hauptbranches:
Master
Entwicklung
Daneben können natürlich auch weitere Branches erstellt werden, um Features in eigenen Zweigen zu entwickeln. Diese sollten jedoch immer mit dem gesamten Team abgesprochen und im Umfach begrenzt werden, um einen problemlosen Merge zum Branch-Ende gewährleisten zu können.
Dadurch ergibt sich der folgende Ablauf:
Der GIT-Workflow für GRIS
Ausgangspunkt ist immer der Master-Branch von dem jeweils ein Test-Branch`abgeleitet bzw. aus dem dieser aktualisiert wird wird. Aus dem `Test-Branch können dann Feature-Brnaches`erzeugt werden, die später durch einen Merge wieder in den `Test-Branch`einfließen. Am Ende gelangen die Änderungen und Features durch einen `Merge-Request im GIT-Backend zurück in den Master-Branch. Hotfixes können direkt im Master-Branch (besser natürlich im Test-Branch und durch Merge-Request) erzeugt werden. Durch das regelmäßige Ableiten von Master nach Test fließen diese auch wieder in die Entwicklung ein.
Durch die oben gezeigten Zyklen ist es wichtig, dass Branches nicht zu lange laufen, denn der Merge kann durch die übeschneidende Bearbeitung sehr komplex werden. Insofern sollte hier bevorzug in kurzen Sprints entwickelt werden.
Größere Änderungen am Kern-System und den Basis-Klassen sollten immer sofort ins Team kommuniziert werden, um Implikationen in anderen Bereichen bereits früh erkennen und gegebenenfalls entgegenwirken zu können.
Wichtige GIT-Befehle
Um Updates der Kernelemente zu gewährleiten, sollte die dazugehörigen Komponenten nicht lokal editiert werden. Nach jeder Updatemeldung sollte zeitnah auf dem lokalen Testsystem eine Aktualisierung durchgeführt werden. Code auf den aktuellen Stand bringen (jeweils im GRIS-Verzeichnis):
git pull
Der Status kann mit folgendem Befehl überprüft werden:
git status
Ein wechsel des Branches erfolgt via:
git checkout NameDesBranches
Falls versehentlich Dateien lokal geänderte wurden, können diese zurückgesetzt und erneut aus dem Repository geladen werden. Bis dahin ist keine Aktualisierung mehr möglich. Zum Zurücksetzen und erneutem Laden folgende Befehle verwenden:
git checkout -- index.php
git pull
Merge von Branches
Es kommt häufig vor, dass während der laufenden Weiterentwicklung Fehler (Bugs) in den Produktivsystemen gemeldet werden. Diese werden dann direkt im Master oder in einem davon abgeleiteten Hotfix-Branch behoben. Damit sich danach Master und Entwicklung nicht zu weit voneinander entfernen, findet zum Ende jedes Hotfixes wieder ein Merge von Master/Hotfix nach Entwicklung statt.
Nach Abschluss eines Entwicklungsblock und den entsprechenden Testläufen wird der Merge in umgekehrter Richtung durchgeführt und damit der Master-Branch auf den aktuellen Entwicklungsstand gebracht.
In Tortoise (Windows)
Bsp.: Merge von Master in Entwicklung:
In den Zielbranch wechseln
Kontextmenü -> TortoiseGIT -> Merge
Quell-Branch auswählen
Merge starten
Bei Bedarf Konflikte auflösen