Wenn ich mit Gerrit (Code Review) arbeite, muss ich häufig eine Kopie eines bestimmten Patch-Sets zu Test- oder Validierungszwecken erhalten. Der naheliegendste und einfachste Weg ist, das Archiv oder die Patch-Datei über die Gerrit-Weboberfläche herunterzuladen und manuell auf meine lokale Quelle anzuwenden.
Während die obigen Schritte ziemlich einfach sind und meine Anforderungen erfüllen, möchte ich in der besten Welt, dass das Patch-Set als Commit in meinem lokalen Git angezeigt wird.
Ich habe mich umgesehen und keine Lösung gefunden. Ich habe einige spärliche Informationen gefunden, die nach dem Zusammenstellen die folgende Lösung ergeben.
Angenommen, Sie möchten das Patch-Set 2 der Gerrit-Änderung 1222 ziehen:
Finden Sie die Remote-Refs, an denen wir interessiert sind:
$ git ls-remote | grep 1220
From http://something.com:8081/MyProject
e2e0212a59240ac5cd7c11220c35542523f44b59 refs/changes/13/713/1
b8c4dceea5eaf1bad711b0ea6938c80ec932726a refs/changes/20/1220/1
6f20c182ec7f54a2aa9e8f6188a0eef1b0790df4 refs/changes/20/1220/2
ed94a98386d224ce3d86004ce99f61220905a077 refs/changes/22/1222/1
Ziehen Sie die Refs:
git pull origin refs/changes/20/1220/2
Dadurch wird ein Git-Festschreibungspunkt erstellt, den Sie eventuell neu erstellen können:
git rebase
git ls-remote origin 'refs/changes/*/1220/*'
.Antworten:
Diese Funktion ist Standard in der Gerrit-Benutzeroberfläche.
Klicken Sie oben rechts auf der Benutzeroberfläche für einen Patch auf Herunterladen. Daraufhin wird Folgendes angezeigt:
Wenn Sie durch die Patches navigieren, gehen Sie zum Download-Bereich und kopieren Sie den Befehlszeilenbefehl zum Auschecken des Patch-Sets, beispielsweise wie folgt:
Dann erstelle ich normalerweise einen Zweig mit der Überprüfungsnummer und dem Patchset als Namen
Denn hier können Sie normal arbeiten und Ihre Änderungen festschreiben oder Ihre Änderungen für diese Änderung auswählen / neu festlegen.
Sobald die Überprüfung von r64403 abgeschlossen ist, kann Ihr Code zusammengeführt werden. Wenn ein anderes Patchset gesendet wird, müssen Sie dasselbe erneut tun.
Wenn Sie die Optionen zum Herunterladen der Option nicht sehen
Checkout
oder die OptionCherry Pick
bearbeiten müssengerrit.config
, gehen Sie wie folgt vor:Weitere Details finden Sie in der Gerrit-Dokumentation
Update: Wie barryku richtig hervorhebt , müssen Sie in der späteren Version das Download- Befehls -Plugin herunterladen. Dies kann während der Ersteinrichtung oder mit dem folgenden Befehl erfolgen:
quelle
Oder Sie können die
-d
Option zum Git-Review verwenden . Angenommen, Sie haben mit dem Nova-Docker- Repository gearbeitet und waren an dieser Änderung in Gerrit interessiert:Sie können das neueste Patchset folgendermaßen herunterladen:
Oder Sie können die Änderungs-ID verwenden:
Sie können auch eine bestimmte Revision des Patches anfordern, indem Sie ein Komma und die Patch-Nummer anhängen. Zum Beispiel, um die zweite Revision dieses Patches zu erhalten:
quelle
git-review
. Eine.gitreview
Datei sieht ungefähr so aus .git review -s
sollte diese Datei einrichten..gitreview
Datei (ansonstengit review -s
wissen Sie nicht, wo sich Ihre Gerrit-Fernbedienung befindet ...). Wenn Sie dies ohne.gitreview
Datei versuchen , wird in diesem Repository die Datei "No '.gitreview' angezeigt. Wir wissen nicht, wo sich Ihr Gerrit befindet. Erstellen Sie manuell eine Fernbedienung mit dem Namen" Gerrit "und versuchen Sie es erneut."git-review
Wert 1,27+ beträgt (siehe phabricator.wikimedia.org/T194520#5446026 )Ich bin mir nicht 100% sicher, was Ihre Frage ist. Klingt so, als ob Sie den Workflow oder das Tippen vereinfachen möchten. bereits erwähnte Larsks,
git review
die meistens verwendet werden.In Ihrem Fall ist es möglicherweise hilfreich, alle Verweise automatisch herunterzuladen, damit Sie sie direkt referenzieren können . Sie können immer alle angegebenen Referenzen wie mit
Dann können Sie lokal mit der Commit-ID arbeiten .
Ein einfacher Git-Alias oder ein Skript für alle Refs kann einfach durchgeführt werden. Ein Beispiel für eine solche while-Schleife finden Sie im Skript unter https://github.com/saper/gerrit-fetch-all. Mit einem so kleinen Shell-Snippet können Sie leicht einen Teil der Referenz-ID überspringen, um leichter darauf zugreifen zu können Sie:
quelle
git
alle Änderungen abrufen möchten und keine bestimmten Gerrit-Tools installieren oder konfigurieren müssen, ist dies die richtige Antwort.Wie in den Kommentaren erwähnt, können Sie einfach den richtigen git-Befehl über die gerrit-GUI abrufen. Wenn Sie GUIs wirklich nicht mögen oder sie automatisieren möchten (und aus irgendeinem Grund nicht verwenden können
git-review
), können Sie die gerrit-API verwenden:oder
quelle