Wie kann ich mit einem einzigen Befehl die letzte Referenz für einen Gerrit-Wechsel erhalten? Ich brauche die Ausgabe als "refs / changes / 11/1234/4". Gibt es einen git-Befehl für dasselbe?
Ich weiß, dass ssh-Befehle in Kombination mit gerrit-Abfragen und ein bisschen Scripting das erreichen können, aber wissen wollen, ob es einen besseren Weg gibt, dasselbe zu tun. Das Folgende ist der ssh-Befehl, den ich verwenden würde, um die refspec zu erhalten.
ssh -p $ REVIEW_SERVER_PORT $ GERRIT_REVIEW_SERVER gerrit-Abfrage --format = TEXT --current-patch-set $ CHANGE_SHA | Grep Ref.
Ähnlich möchte ich auch den LETZTEN PATCHSET der Gerrit-Änderung erhalten
Sie sollten die Gerrit-Abfrage verwenden. Gegebene Änderungsnummer 4665
:
Welche Ausgaben:
%Vor% Hier finden Sie das Feld currentPatchSet.ref
.
Alte, überkomplizierte Lösung:
Vorausgesetzt, dass Sie den letzten Patchsatz der Änderung 2392
erhalten möchten:
was refs/changes/92/2392/12
für mein Repo ausgibt.
Oder wenn Sie die letzte Änderung von der Gerrit bekommen wollen:
%Vor% was refs/changes/54/2554/2
für mein Repo ausgibt.
Erläuterung
git ls-remote Befehl zeigt alle Referenzen an ein Remote-Repository, also im Falle von Gerrit - ist auch jeder Patchsatz aufgelistet. Es gibt etwas aus wie:
%Vor% Um also alle Patchsets einer bestimmten Änderung auszuwählen, müssen wir die Ergebnisse um /NUMBER/
erweitern, was die grep /2392/
erklärt. Danach und durch Auswahl der zweiten Spalte mit awk ergibt sich folgendes Ergebnis:
Nun wollen wir den letzten Patchsatz auswählen. Wir müssen sortieren. Der Befehl sort kann nach Zahlen mit -n
sortiert werden, und wir können angeben, welche Spalte ausgeführt werden soll Sortierung mit -kX
Argument. Aber es erfordert Spalten, die durch Leerzeichen getrennt werden (AFAIK), also müssen wir unsere /
Trennzeichen durch ein Leerzeichen ersetzen. Wir verwenden sed dafür. Nach dem ersten Austausch wird jedes refs/changes/92/2392/X
refs changes 92 2392 X
. Dann wird die Sortierung in der fünften Spalte (Patchset-Nummer) durchgeführt. Ergebnis:
Als letztes wählen Sie die letzte Zeile mit Ende aus und ersetzen die Leerzeichen durch Schrägstriche . Voilà!
Das Auswählen der letzten Änderung von Gerrit erfolgt auf die gleiche Weise, aber ohne grep und Sortieren nach der vierten Spalte (Change-Id).
Tags und Links git gerrit ssh code-review refspec