2016-06-29 10 views
2

Ich möchte den Standard-Gerrit-commit-msg-Hook ändern, um automatisch Signed-Off-by hinzuzufügen. Allerdings kann ich die Datei commit-msg auf dem Gerrit-Server nicht finden, es scheint, als wäre die commit-msg in der Datei gerrit.war eingepackt.Ändern der Standard-Gerrit-commit-msg

Gibt es eine Möglichkeit, den Standard-Gerrit-commit-msg-Hook zu ändern?

+0

Nicht möglich AFAIK. Das würde aber auch nötig sein. Könnten Sie das bitte in der Liste [repo-discuss] (https://groups.google.com/forum/m/#!forum/repo-discuss) fragen? – StephenKing

Antwort

0

Nein, gibt es nicht. Sie müssen Ihre eigenen patchset-erstellten und Draft-Published-Hooks entwickeln, die Sie in $ GERRIT_SITE/hooks verwenden können. Es ist wichtig, daran zu denken, dass diese Hooks ein neues Patchset (Commit) erstellen müssen, um die signierten Off-By-Informationen hinzuzufügen.

+0

Bedeutet das, dass die Haken auf Gerrit installiert werden? Und wenn der Benutzer ein neues Patchset auf Gerrit drückt, löst es den Hook aus, um die Nachricht "Signed-by-by-to-commit" hinzuzufügen? –

+1

Genau, wenn ein Benutzer ein neues Patchset nach Gerrit schiebt, löst es die Hooks im Verzeichnis $ GERRIT_SITE/hooks aus. Sie müssen einen Hook entwickeln, um das Patchset zu bearbeiten, die signierten Off-By-Informationen hinzuzufügen und das neue Patchset zu übernehmen. Weitere Informationen finden Sie hier: https://gerrit-review.googlesource.com/Documentation/config-hooks.html –

+0

Ich habe vergessen zu erwähnen: Sie können festlegen "Require signated-by-by in Commit-Nachricht" = TRUE in der Projektkonfiguration zu Fordern Sie bei jedem Commit, das an Gerrit übergeben wird, die Abgesandte-Information an. Weitere Informationen finden Sie hier: https://gerrit-review.googlesource.com/Documentation/project-configuration.html#_require_signed_off_by –

0

Sie können commit-msg in diesem Ort finden:

gerrit.war 
    WEB-INF/lib/gerrit-server-server.jar 
     com/google/gerrit/server/tools/root/hooks/commit-msg 

gerrit.war und WEB-INF/lib/gerrit-server-server.jar Archiv sind so müssen Sie es entpacken und nach der Änderung umpacken wieder

2

Es gibt eine andere Art und Weise ist, die eigene bekommen helfen können begehen -msg Haken statt der Standard-von Gerrit. Die Idee ist, eine andere Version des Hooks bereitzustellen und dann Gerrit zu bitten, den Shel-Befehl zu veranlassen, diese Version für Sie zu bekommen.

Hier ist, wie Sie es schaffen können.

  1. Richten Sie einen Dateiserver mit Nginx oder Apache ein und fügen Sie Ihren eigenen commit-msg Hook in diesen Server ein. Nachdem Sie das getan, würden Sie eine URL dieses commit-msg Haken
  2. Konfigurieren eines Elements namens gerrit.installCommitMsgHookCommand in Gerrits configure Datei gerrit.config mit einem Shell-Befehl erhalten, die Ihre commit-msg Haken
  3. Restart Gerrit Server

Zum Beispiel herunterladen konnte der Wert von gerrit.installCommitMsgHookCommand in meinem Gerrit Server ist:
gitdir=$(git rev-parse --git-dir); wget -qO ${gitdir}/hooks/commit-msg http://myservername/hooks/commit-msg; chmod a+x ${gitdir}/hooks/commit-msg

Als ich zu meinem Gerrit Server begehen schieben ohne Wechsel-Id Zeile in der Commit-Nachricht, werde ich die folgende Meldung erhalten:


Remote: Die Verarbeitung der Änderungen: Refs: 1, getan
remote: ERROR: fehlende Änderungs-Id begehen in Nachrichten Fußzeile
Fern :
remote: Tipp: Um die Change-ID automatisch einzufügen, installieren Sie den Hook:
remote: gitdir = $ (git rev-parse --git-dir); wget -qO $ {gitdir}/hooks/commit-msg http://myservername/hooks/commit-msg; chmod a + x $ {gitdir}/Haken/commit-msg
Fern: Und dann ändern die commit:
remote: git commit --amend

Durch die Beschreibung der Artikel gerrit.installCommitMsgHookCommand in Gerrit Dokument lesen Du kannst sehen, wie es klar funktioniert.