Ich lerne jetzt Gerrit (das erste Code-Review-Tool, das ich verwende). Gerrit benötigt eine überprüfte Änderung, um aus einem einzigen Commit zu bestehen. Mein Feature-Zweig hat ungefähr 10 Commits.
Der von Gerrit bevorzugte Weg besteht darin, diese 10 Commits zu einem einzigen zusammenzufassen. Auf diese Weise geht jedoch der interne Verlauf dieses Feature-Zweigs verloren, wenn das Commit in den Zielzweig zusammengeführt wird. Zum Beispiel kann ich git-bisect
diese Commits nicht halbieren. Habe ich recht?
Ich mache mir ein bisschen Sorgen um diesen Zustand. Was ist der Grund für diese Wahl? Gibt es eine Möglichkeit, dies in Gerrit zu tun, ohne die Geschichte zu verlieren?
git
code-reviews
gerrit
liori
quelle
quelle
Antworten:
Die Codeüberprüfung hat die beste Auswirkung, wenn es sich um einen Pre-Commit-Hook (Pre-Push bei Git) handelt. Wenn im 5. Ihrer zehn Commits ein Fehler aufgetreten ist, wie würden Sie ihn beheben (Verlauf beibehalten)? Natürlich können Sie einen weiteren Themenzweig erstellen, dieses Commit korrigieren, die verbleibenden 5 Commits auswählen und die Diffs erneut zur Überprüfung senden, aber dies ist sehr komplex (obwohl Sie ein Skript dafür schreiben können).
Änderungen an einem einzelnen Repo sollten im Idealfall seinen Status beibehalten (z. B. Build, Tests usw. nicht unterbrechen). Wenn Ihre Änderungen auf diese Weise vorgenommen werden, können sie separat überprüft werden. Andernfalls ist es besser, sie zu quetschen, als das Repo zu verlassen inkonsistent.
Sie können im Bug-Tracker einen Fehler erstellen und in jedes Commit eine Referenz einfügen, damit die Prüfer und zukünftigen Leser wissen, was Sie insgesamt erreichen wollten.
quelle
Was ist mit Fortsetzung der Integration? Sie haben 10 Commits für einen Feature-Zweig vorgenommen und dieser wird sofort "veröffentlicht" - dies wäre eine enorme Auswirkung auf andere, die diese Commits / Änderungen überprüfen sollten.
Es lohnt sich jedoch, 10 Commits zu pushen, wenn die Commits separate Codeänderungen enthalten. Falls die Commits jedoch fortlaufende Änderungen an einem einzelnen Feature enthalten (die meisten Commits sind also nur Korrekturen oder der mittlere Status einer laufenden Implementierung einer Funktionsdefinition), sollten Sie sie besser zu einem einzigen Commit zusammenfassen.
Denken Sie im Allgemeinen mit den Gedanken der Prüfer darüber nach, wie groß eine Code-Änderung ist, die leicht überprüft werden kann.
Hinweis: Gerrit dient nicht nur zur Überprüfung des Codes. Änderungen sollten mehrere Abnahmetests auslösen. (Komponententest, Rauchtest) Wenn Sie diese haben, ist es schwieriger, fehlerhafte Codes zu veröffentlichen. Aus dieser Perspektive sollte ein Commit solche Änderungen enthalten, die es wert sind, getestet zu werden.
Gerrit zwingt Sie also, keine zu kleinen und zu großen Änderungen vorzunehmen. (Sie werden
--amend
nicht nur eine Änderung korrigieren, die bereits an Gerrit gesendet wurde, sondern auch ein Commit, das Sie zur Überprüfung senden möchten.)quelle