Git-Review 101

Um das Zusammenspiel zwischen Git und Gerrit zu vereinfachen gibt es die Erweiterung git-review. Leider ist die Dokumentation im Netz nicht besonders ausführlich und die man page schlicht fehlerhaft. So kommt es immer wieder einmal zu Missverständnissen. Insbesondere die sehr praktische Datei .gitreview scheint weitgehend unbekannt zu sein. Aber das lässt sich ändern 🙂

git-review macht immer ein rebase -i

Häufig wird übersehen, dass git-review vor dem push automatisch ein rebase -i auf den aktuellen remote master (bzw. den target branch) durchführt. Zusammen mit einem merge commit führt das unweigerlich zu Ärger. Lokale merges sind zwar meiner Meinung ohnehin falsch und darüber hinaus bei Verwendung von gerrit ohne das entsprechende Recht nicht erlaubt – aber das mag jedes Team für sich entscheiden. Spätestens beim Versuch einen merge commit zu squashen knallt es jedenfalls. Abhilfe hiervon schafft der Parameter ‚-R‘ also  git review -R  statt  git review . git-review macht dann kein rebase und pusht (nach einer Nachfrage, ob das denn so wirklich gewollt sei) alle offenen commits zu gerrit. Wen die Nachfrage stört kann das mit –yes oder -y umgehen.

git-review braucht kein remote namens gerrit

In fast allen Projekten, die mit Gerrit und git-review arbeiten findet man die folgende Konfiguration:

In der Regel wird erst das Projekt geklont und dann ein redundantes remote namens ‚gerrit‘ hinzugefügt. Das liegt daran, dass git-review erstmal davon ausgeht, dass es ein remote mit diesem Namen gibt. Es gibt mindestens drei Möglichkeiten es besser zu machen.

  1. Bei jedem Aufruf über den Schalter ‚-r‘ ein anderes remote angeben. Also  git review -r origin -R
  2. Statt mit  git remote add gerrit ssh://user@gerrit.flavia-it.de:29418/Project  das remote doppelt anzulegen kann man es einfach mittels  git remote rename origin gerrit umbenennen.
  3. Man ändert das default remote. Das geht? Ja, das geht.

.gitreview

Die ganze Geschichte kann man sich sehr viel leichter machen, wenn man im Wurzelverzeichnes seines Repositories eine Datei namens ‚.gitreview‘ anlegt. Soweit ich es in Erfahrung bringen konnte können dort sechs Werte definiert werden:

Ob das mit dem project so funktioniert habe ich im Übrigen nicht ausprobiert. Die ersten drei Einträge ergeben sich ja eigentlich über das remote und ich habe sie noch nicht verwendet. Die letzten beiden (defaultremote und defaultrebase) sind hingegen wirklich hilfreich und ersparen einem den ganzen oben beschriebenen overhead.

Ich hoffe, das hilft dem Einen oder der Anderen weiter!

 

Das könnte Dich auch interessieren...

1 Antwort

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu. Weitere Informationen

Die Cookie-Einstellungen auf dieser Website sind auf "Cookies zulassen" eingestellt, um das beste Surferlebnis zu ermöglichen. Wenn du diese Website ohne Änderung der Cookie-Einstellungen verwendest oder auf "Akzeptieren" klickst, erklärst du sich damit einverstanden.

Schließen