Besorgen Sie sich die neueste Refspec für eine Gerrit-Änderung

8

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

    
Jose 08.03.2014, 03:13
quelle

2 Antworten

6

Sie sollten die Gerrit-Abfrage verwenden. Gegebene Änderungsnummer 4665 :

%Vor%

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:

%Vor%

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:

%Vor%

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:

%Vor%

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).

    
fracz 26.09.2014 22:16
quelle
1

Hier ist eine Lösung, die über HTTP funktioniert, da SSH in einigen CI-Umgebungen möglicherweise nicht funktioniert.

%Vor%     
sorin 02.12.2016 12:11
quelle

Tags und Links