2013-06-30 17 views
5

verfolge ich ein Beispiel aus unserer IT-Abteilung, und ich möchte verstehen, was dieser Befehl genau zu verstehen, tut:benötigen Git/Gerrit Befehl (Fetch & Push)

git fetch origin +refs/changes/*:refs/remotes/origin/changes/* 

einige Rahmen zu geben, Referenz ist dies Teil eines Continuous Integration (CI) -Tools, und dies ist Teil des Schritts zum Auschecken des zu testenden Codes. Das CI-Build durch Drücken auf Gerrit mit ausgelöst wird:

git push origin HEAD:refs/for/master 

I sekundäre Frage ist, ob ich wollte den Wechsel in einen Entwicklungszweig schieben konnte ich verwenden:

git push origin HEAD:refs/for/development 
+0

Welches CI-Tool verwenden Sie? Jenkins? – uncletall

+0

Ich benutze Teamcity – Plazgoth

Antwort

0

Ich weiß nicht, irgendetwas über Gerrit. Aber ich kann etwas über den ersten Git Befehl sagen, den Sie erwähnen.

Die letzten Teile der von Ihnen genannten Befehle heißen refspecs. Sie können darüber lesen, was sie in der Refspec chapter of the Pro Git book tun. Kurz gesagt:

git fetch origin +refs/changes/*:refs/remotes/origin/changes/* 

Dies sagt, dass für die origin Fernbedienung, die Festschreibungen des Zweiges holen, die im origin Repository, sind im refs/changes Verzeichnis im Git-Verzeichnis (dh .git/refs/changes/ in einer Standard-Repository und refs/changes in einem normalen nackten Repository). Es kopiert diese Zweige in das lokale Verzeichnis .git/refs/remotes/origin/changes/. Wie beim normalen Abrufverhalten werden schließlich die zu diesen Zweigen gehörenden Commits in das Verzeichnis .git/object kopiert.

Der Standard Refspec ist +refs/heads/*:refs/remotes/origin/*, so dass die refs/changes sieht ein bisschen seltsam für mich. Das ist kein Standard-Git-Verzeichnis, aber vielleicht ist es eine Gerrit-Sache. Die Struktur refs/remotes/origin/changes sieht aus wie changes ist ein Zweig in Ihrem lokalen Repository.

0

Ein typischer Zug eines Patch würde wie folgt aussehen: git pull ssh://www.example/com:29418/project refs/changes/24/24/2

Dies würde Ihr Projekt plus das zweite Patch Satz von Veränderungs ziehen 24. Also, wenn Sie ziehen alle Änderungen, die viel sein kann.

Ich würde empfehlen, dass Sie Jenkins verwenden (CI) plus der Gerrit-Plugin und stellen Sie sicher, die choosing strategy als Gerrit Trigger angeben. Dies stellt dann sicher, dass Build die entsprechende Änderungsmenge testet.

Ja, Sie können zu einem Entwicklungszweig schieben. Natürlich müssen Sie sicherstellen, dass Sie die richtigen Rechte haben. Am besten ist es, zuerst die Verzweigung in Gerrit zu erstellen, auf diese Weise müssen Sie nicht die "create reference" -Rechte angeben und das Erstellen von Verzweigungen durch Fehler, z. B. durch Schreibfehler, verhindern.