2019.06 2020.06

Arbeiten mit Git

Allgemeines

Mit Release 2016.06 ist MyCoRe im September 2016 auf GitHub als Versionierungssystem umgezogen. Die soll sowohl die Wahrnehmung des Projektes in der Open Source Gemeinde begünstigen wie auch Verbesserungen bei der Arbeit an neuen Funktionen und gemeldeten Bus bringen. MyCoRe erhofft sich damit auch eine größere Zahl mitwirkender Codeentwickler. Zum Einrichten der Git-Umgebung und der Arbeit sei auf unsere Eclipse-Dokumentation verwiesen.

Übersicht der MyCoRe-Git-Prozesse

Abbildung 1: Übersicht der MyCoRe-Git-Prozesse

Bearbeiten eines Bugs

Für die Bearbeitung eines Bugs muss zuerst dieser bei MyCoRe-Jira gemeldet werden.

Zuerst ist ist je nach dem, wo der Fehler aufgetreten ist, der main und die entsprechenden LTS-Branches auszuchecken. Bei Fehlern im LTS erfolgt am Ende ein merge in den Main. Dies und alle weiteren Schritte in Git sollten wegen der sichereren Verarbeitung auf der Kommandozeile ausgeführt werden.

mkdir -p git; cd ~/git; git clone https://github.com/MyCoRe-Org/mycore.git

Mit git status kann man sich jederzeit den eigenen Arbeitsstatus anzeigen lassen.

Die Liste der vorhandenen Branches bekommt man mit git branch -v

Je nach dem, ob der Bug im main (unter SVN trunk) oder in einem Branch ist, muss in selbigen gewechselt werden. git checkout [main | LTS-Branch]

Es ist sinnvoll nun noch einmal den eigenen Codestand mit git pull -r zu aktualisieren.

Nun ist zum Zwecke der Bearbeitung des Tickets ein eigener Branch dafür zu erstellen. Dieser MUSS für MyCoRe zwingend die Form haben issues/{JIRA-Ticket}-{Ticket Summary} !!! Dies wird mit git checkout -b issues/{JIRA-Ticket}-{Ticket Summary} erzeugt. Im Ticket Summary dürfen keine Leerzeichen stehen. Beispiel: git checkout -b issues/MCR-1428-delete_in_SVN_store

Nun sind die gewünschten Änderungen in den Code einzuarbeiten und lokal zu testen. Um Probleme mit dem CI im GitHub zu vermeiden, sollten folgende Tests erfolgreich sein:

  • export CI=true; export MAVEN_OPTS= ; mvn clean install
  • mvn javadoc:javadoc

Mit git diff [--index | --cached] werden diese angezeigt.

Geänderte Dateien können Git mit git add {path to file} bekannt gemacht werden.

Ist alles fertig erfolgt im lokalen System ein git commit . Im Commit-Text muss in der ersten Zeile die Ticket-Nummer und ein sehr kurzer beschreibender Text stehen. Ausführlichere Erläuterungen folgen dann in den folgenden Zeilen.

Mit git push --set-upstream origin issues/{JIRA-Ticket}-{Ticket Summary} wird nun die Änderung Richtung GitHub befördert.

Da in MyCoRe vor der Aufnahme eines Fixes noch ein Code-Review steht, welches nur wenige Kern-Entwickler bearbeiten, muss nun ein Pull-Request gestellt werden. Hierfür ist auf die MyCoRe-Git-Seite zu gehen.

  • Dort steht unter dem Button Branch: main der eigene Bugfix.
  • Dieser ist auszuwählen und in der nun erscheinenden Ansicht ist New pull request anzuklicken.
  • Hier nun unter base das Release bzw. den Main auswählen, für den der Fix ist
  • Weiterhin ist die Commit-Nachricht auf Logik und Aussagekräftigkeit zu prüfen. Es gelten die Regeln wie beim Commit!
  • Zum Schluss ist die Anforderung mittes Create pull request abzusenden.

Ist mit dem Pull request alles klar gegangen, kann der Branch für den Fix mit git checkout [main | release] und git branch -d issues/{JIRA-Ticket}-{Ticket Summary} vom lokalen System gelöscht werden.

Wenn ein Pull Request nicht angenommen wird

[ToDo]