Benutzerin:Zoe.martin/Git im HaDiKo
Git im HaDiKo: Gerrit
Im HaDiKo verwenden wir zur Versionskontrolle Gerrit. Es ist eine sehr mächtige Git Server Software, die an einigen Stellen etwas schwieriger für Einsteiger zu verstehen ist als GitHub oder GitLab, aber dieser Artikel soll dir beim Einstieg helfen.
Um ein Repository auf Gerrit zu öffnen, nutzt du im Seitenheader das Menü 'Browse' > 'Repositories'. Dort siehst du nun alle Repositories, auf die du Zugriff hast.
Auf der Detail-Seite eines Repos findest du in der Mitte zwei Buttons:
- Der 'Browse' Button führt dich zu einer Ansicht mit dem eigentlichen Inhalt des Repositories. Den Code findest du wenn dann in der Sidebar links einen Spezifischen Branch auswählst. Für den Hauptbranch hier meistens
masterodermain - Der 'View Changes' Button führt dich zu allen offenen und geschlossenen "Pull Requests" oder "Changes" des Repos
- Darunter befinden sich die Commands zum Clonen des Repos
- In der Sidebar Links befinden sich noch einige Unterseiten wie einer Übersicht der existierenden Branches und Tags oder der 'Commands' Unterseite auf der neue Changes erstellt werden können
Hauptunterschiede zu GitHub/GitLab
Um auf GitHub eine Änderung an einem Repo vorzunehmen, erstellst du meistens in deiner lokalen Kopie des Repos einen neuen Branch, nimmst deine Änderungen vor, dies in einem oder mehreren Commits, pushst diese dann auf einen separaten Branch auf GitHub. Dann kannst du im WebUI einen Pull Request erstellen, welcher dann verknüpft mit dem Branch neue Commits trackt, und auf dem Code Reviews vorgenommen werden können.
Die Nutzung von Gerrit unterscheidet sich hier: Ein "Pull Request" heißt hier "Change" und ein Change besteht immer aus genau einem Commit mit einer zugehörigen Change-Id.
Git-Review Tool
Es ist sehr zu empfehlen das 'git-review' Tool zu verwnden. Das Tool ist eine Extension für git in der CLI um das Arbeiten mit Gerrit zu vereinfachen. Eine Installationsanleitung für dein Betriebssystem findest du hier. Damit vereinfacht sich das Arbeiten an Changes um einiges.
Um git-review in einem Repo zu verwenden muss eine .gitreview Datei im Hauptverzeichnis des Repository mit folgendem Inhalt existieren:
[gerrit]
host=gerrit.hadiko.de
port=29418
project=<Project Name>
defaultbranch=<master oder main>
defaultremote=origin
Mit git review -s geschieht das initiale Setup in einem neuen oder existierenden Repository für alles was du zum Arbeiten mit Gerrit brauchst. D.h. wenn du git review verwendest musst du die git-hooks für Change-Ids nicht direkt beim Clonen installieren, das geschieht hiermit auch. Also git clone ... gefolgt von git review -s im Repo genügt.
Erstellen eines Changes
Das Entwickeln und Erstellen eines Changes kann ähnlich wie bei GitHub/GitLab bswp. auf einem dev/... oder feature/... Branch geschehen, welcher regelmäßig auf Gerrit gepushed werden kann. Wenn es an der Zeit ist einen Change zu erstellen, um deine Änderung in den Main Branch des Repos zu mergen, ist der einfachste Weg (sofern du deine Änderungen sowieso auf einen Separaten Branch auf Gerrit pushst) über das WebUI. Dazu navigierst du auf die 'Commands' Unterseite des Repos (Beispiel). Dort gibst du dann Branch mit deinen Änderungen und eine kleine Beschreibung an und drückst auf Create. Dieser Change ist erstmal Work-in-Progress. Wenn du fertig bist, schälst du ihn aktiv, indem du entweder auf 'Start Review' oder 'Mark as Active' drückst.
Es ist auch möglich einen Change direkt aus deiner CLI zu erstellen. Verwendest du git-review kannst du mit git review den Change erstellen. Ohne git-review geht das mit dem Command git push HEAD:refs/for/master.
Achtung: Hierbei wird aber für jeden Commit, welcher nicht bereits Teil des master/main Branches ist ein Separater Change erstellt. Das heißt, falls deine Änderungen auf mehrere Commits verteilt sind, müsstest du diese erst Squashen wenn sie einen Change ergeben sollen.
Änderungen an Changes
Web Editor
Für kleine Änderungen empfiehlt sich der Web-Editor. Dieser ist über die Seite deines Changes Oben Rechts per 'Edit' erreichbar. Dort kannst du alles an deinem Change ändern, inklusive Änderungen an der File List wo du Dateien Löschen, Hinzufügen oder im Web Editor bearbeiten kannst. Am Ende musst du nur den 'Edit' Mode auch wieder beenden.
Lokal
Wenn du lokal an deinem Change arbeiten willst, brauchst du nur die 4-Stellige Change Nummer. Diese findest du z.B. neben dem Titel oder in der URL.
Mit git review -d <Change Nummer> kannst du die Änderungen herunterladen und auf einem neuen Branch bearbeiten. Der Workflow sieht dann üblicherweise so aus:
$ git review -d <Change>
# ... Änderungen vornehmen ...
$ git commit --amend --no-edit
$ git review