Mit normalem Git und Github kann ich eine Codeüberprüfung durchführen, indem ich einfach eine Pull-Anfrage des Feature-Zweigs, an dem ich arbeite, an den Master-Zweig erstelle. Wie würde ich Code-Reviews mit Git-Flow durchführen? Bei einem Workflow wie "Fertigstellen von Git-Flow-Funktionen" bin ich verwirrt, wo die Codeüberprüfung tatsächlich stattfindet und wie Git-Flow oder Git diese Überprüfung erleichtern können.
43
Antworten:
Wir sind kürzlich auf genau dieses Problem gestoßen. Wir mögen Git Flow sehr, da es eine gute Ebene der Semantik verwendet (mit der gleichen Ebene, die Sie in der Teamdiskussion verwenden: "Ich beginne Feature A" mehr als "Ich erstelle einen Zweig, checke es aus"), während git ist sehr "Implementierungs" -Stufe (was auch gut und nützlich ist, aber anders).
Das Problem, das wir haben, besteht darin
git feature finish
, dass die Verzweigung in die Entwicklung eingebunden wird, während eine Pull-Anfrage gesendet und (dies ist wichtig) vom Prüfer und nicht vom Committer zusammengeführt werden soll, um die Teamverantwortung zu betonen.Unsere aktuelle Lösung:
Dies steht im Einklang mit unserer Praxis, mit dem Nachteil, dass wir den Zweig selbst löschen müssen (da wir nicht mit flow finish arbeiten). Unser nächster Schritt wird wahrscheinlich darin bestehen, einige Teile des Git-Flows neu zu implementieren (da es hauptsächlich um das Verketten von Git-Befehlen geht), um dies zu berücksichtigen (wobei der "Reinigungsteil" des Finishs ohne Zusammenführung erfolgt).
quelle
Der Prozess, den das Team, mit dem ich arbeite, dafür verwendet, ist wie folgt:
git flow feature start module_1
develop
und dem Feature-Zweig eine Pull-Anfrage geöffnetmodule_1
git flow feature finish module_1
develop
Verzweigung wird an GitHub weitergeleitet (GitHub markiert die Pull-Anforderung in diesem Fall automatisch als geschlossen / zusammengeführt).Normalerweise wird der gesamte Vorgang vom ursprünglichen Autor ausgeführt, dies ist jedoch nicht erforderlich. Jeder in unserem Team kann jederzeit in diesen Prozess einsteigen und ihn in Angriff nehmen. Sie müssen lediglich den Feature-Zweig auschecken und mit dem Vorgang fortfahren. Wer immer läuft
git flow feature finish module_1
, hat den Luxus, dass seine lokale Feature-Verzweigung gelöscht wird, aber jeder andere, der die Verzweigung ausgecheckt hat, muss dies manuell tun, wenn er etwas wie verwenden möchtegit branch -D feature/module_1
.Für Hotfixes verwenden wir einen ähnlichen Ansatz und erstellen die Pull-Anforderung in GitHub, bevor wir den Hotfix fertigstellen.
quelle
Wenn Sie Codeüberprüfungen durchführen, gehe ich davon aus, dass Sie ein zentrales Repository haben, das den "offiziellen" Code enthält. Entwickler ziehen aus diesem zentralen Repository und verschieben es in dieses.
Wenn Sie Gerrit verwenden , wird Gerrit selbst zum zentralen Repository (es verfügt über integrierte SSH- und HTTP-Server, mit denen Benutzer im Wesentlichen so interagieren können, wie sie es bereits sind). Bei Verwendung von Gerrit wird der Workflow zu:
Wenn Sie ein zentrales Repository verwenden, können andere Entwickler die übermittelten Änderungen nach Schritt 2 sehen. Gerrit führt den Workflow für die Codeüberprüfung ein, sodass andere Entwickler die übermittelten Änderungen erst nach Schritt 5 sehen.
Dies funktioniert gut mit Git-Flow (oder einem anderen Verzweigungsschema), da Gerrit das Überprüfen von Änderungen unterstützt, die an einem Zweig vorgenommen wurden.
quelle
Hier ist ein weiterer Vorschlag.
quelle