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?
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»:
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
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.
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.
Hinweis: dieser Blog wiederspiegelt meine persönliche Meinung und hat nichts mit meiner Anstellung als Dozent der zhaw noch mit anderen Anstellungen zu tun.