Gerrit, git und Überprüfung der gesamten Branche


8

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-bisectdiese 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?


1
Dies könnte in Stackoverflow besser geeignet sein

1
Ich habe keine Erfahrung mit Gerrit. Ich habe Atlassian FishEye + Crucible verwendet und es gibt diese Einschränkung nicht. Ist es möglich, einer einzelnen Überprüfung zusätzliche Commits hinzuzufügen? Möglicherweise müssen Sie dies manuell tun.
Andrew T Finnell

Soweit ich weiß, unterstützt Gerrit die Überprüfung einer Filiale nicht. Es wird jeweils nur die Überprüfung und Genehmigung eines einzelnen Patches unterstützt. Und sie behaupten, dass es eine Funktion ist, kein Fehler. Ich bin nicht einverstanden und suche nach einem Tool, das einen Zweig als Ganzes überprüfen und atomar entweder den Zweig genehmigen oder den gesamten Zweig ablehnen kann (und trotzdem Kommentare pro Patch / Zeile erhält).
Mikko Rantalainen

Antworten:


2

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.


2
"Wie würden Sie das beheben?" - Fehler passieren, und im Moment war es genug für uns, das Problem nur in einem der späteren Commits zu beheben, solange der Hauptzweig auf dem zentralen Server nie direkt auf ein Commit zwischen Fehler und Fehler hinwies Fix. In diesem Fall würde ich also einen Fix als elftes Commit in den überprüften Zweig einfügen. Ist diese Methode eine schlechte Sache?
Liori

1

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 --amendnicht nur eine Änderung korrigieren, die bereits an Gerrit gesendet wurde, sondern auch ein Commit, das Sie zur Überprüfung senden möchten.)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.