Rémy Schumm blog ingénieur

Code-Review wenn schon alles im master ist.

publiziert am 02. 05. 2020 um 07:05

Wer kennt es nicht: «Können wir noch kurz ein Code-Review machen?» - Ein kurzer Blick ins Repo zeigt, dass schon seit 2 Jahren am Code gearbeitet wurde, und es gibt keine Branches oder PR, um etwas zu diskutieren: alles ist auf master. Oder, aus dem Alltag als Software-Dozent: Studenten haben eine Aufgabenstellung bekommen, und alles auf Master eingecheckt. Wir sollen bewerten, was sie gemacht haben. Wie kann man das jetzt reviewen?

github / gitlab Bordmittel

Wir wollen einen Review ohne Review-Tool machen, und zwar mit den den github/gitlab Bordmittlen. Man kann Code nur in PullRequest kommentieren, d.h. wir brauchen einen branch und PullRequest. Dazu verwende ich folgenden Trick mit den «künstlichen review-Branches»:

review mit Feedback ohne reviewten Korrekturen

Als erstes müssen wir herausfinden, ab wann wir die Änderungen reviewen wollen, bei Stundenten z.B.: wo ist der commit mit der Aufgabenstellung? Oder bei Archäologie-Reviews: ab wann wollen wir reviewen? Wenn man den Commit (bzw. die commit-id) hat, machen wir von dort aus einen neuen Branch mit dem Namen z.B. review:

git branch review 6e9100ad8375
git push --all 

Dieser Branch hat nun den Stand, bevor die Arbeit begonnen hat. Jetzt kommt der Trick:
Mache einen PullRequest von master auf den review Branch. Man sieht nun alle Dinge, die seit dem Start der Arbeiten gemacht wurden, und kann direkt im PullRequest, im Code, Feedback geben.
Allfällige Korrekturen können direkt auf Master gemacht werden.
Nach dem Review kann der PR einfach geschlossen werden, der Branch wird nicht mehr benötigt.

Bem: um einen falsch gesetzten Branche wieder zu löschen:

git branch -d review 
git push --all 

review mit Feedback mit reviewten Korrekturen

Wenn man die Korrekturen auch noch reviewen möchte, funktioniert das genau gleich, allerdings gibt es einen Branch zusätzlich, wo die Änderungen gemacht werden.
Wir machen zuerst wieder den gleichen Branch wie oben, bennen ihn jetzt aber review-base, ab dem commit, von wo aus wir reviewen möchten:

git branch review-base 6e9100ad8375db64562c9f3e1bd35e788846b956
git push --all 

Dann machen wir einen Branch (ab master), wo wir die Korrekturen des Reviews einbauen wollen:

git branch review-corrections 
git push --all 

Nun kann wieder ein Pull-Request von review-corrections auf review-base. Da sieht man wieder alle Änderungen seit der Basis und kann alles diskutieren. Korrekturen werden auf dem Branch review-corrections gemacht.
Wenn die Corrections durch sind, kann wieder ein Pull-Request gemacht werden, von review-corrections auf master: da sieht man alles, was korrigiert wurde und kann es dann absegnen.

Konkurrenz

Mir ist bewusst, dass ich da natürlich das Rad neu erfunden habe - Review-Tools machen das auch. Ich wollte hier zeigen, wie man das «zu Fuss» macht, wenn kein Review-Tool da ist.
Und: natürlich bedient sich GithubClassroom bei der «review» Funktion genau des gleichen Tricks.
n.B.: ein Student hat mich drauf aufmerksam gemacht, dass die verschiedenen Werkzeuge (github, gitlab, bitbucket) anders mit gelöschten Dateien umgehen. Also, vorsicht bei der Benutzung dieses Tricks.


zurück zum Seitenanfang