2016-06-29 61 views
2

我想更改默認的Gerrit commit-msg掛鉤以自動添加Signed-off-by。但是,我在Gerrit服務器中找不到文件commit-msg,好像commit-msg在gerrit.war文件中被包裝了。更改默認gerrit commit-msg

有沒有什麼辦法可以改變默認的Gerrit commit-msg鉤子?

+0

不可能AFAIK。但也需要這一點。您可以在[repo-discuss](https://groups.google.com/forum/m/#!forum/repo-discuss)列表中提問嗎? – StephenKing

回答

0

不,沒有。您需要開發自己的補丁集創建和草稿發佈的鉤子,以便在$ GERRIT_SITE /鉤子中使用。記住這些鉤子需要創建一個新的補丁集(提交)來添加已簽名的信息非常重要。

+0

你的意思是鉤子安裝在Gerrit上嗎?當用戶在Gerrit上推送一個新的補丁集時,它會觸發掛鉤以添加已簽名的提交消息? –

+1

確切地說,當用戶將一個新的補丁集推送到Gerrit時,它會觸發$ GERRIT_SITE/hooks目錄上的鉤子。您需要開發一個鉤子來編輯補丁集,添加已簽名的信息並提交新的補丁集。在這裏看到更多的信息:https://gerrit-review.googlesource.com/Documentation/config-hooks.html –

+0

我忘了提及:你可以在項目配置中設置「需要簽署的提交信息」= TRUE在每次提交給Gerrit的提交中都需要簽名關閉信息。在這裏查看更多信息:https://gerrit-review.googlesource.com/Documentation/project-configuration.html#_require_signed_off_by –

0

您可以在此位置commit-msg

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

gerrit.warWEB-INF/lib/gerrit-server-server.jar是存檔,所以你必須將它解壓縮和變化後再次改裝

2

還有另一種方法,可以幫助讓自己的承諾-msg鉤子而不是Gerrit的默認鉤子。 這個想法提供了另一個版本的鉤子,然後讓Gerrit提示Shel命令爲你獲取該版本。

這裏是你如何做到這一點。

  1. 設置與Nginx的或Apache文件服務器,並把自己的commit-msg鉤到該服務器。這樣做了以後,你會得到在格里特的配置文件gerrit.config用shell命令名爲gerrit.installCommitMsgHookCommandcommit-msg
  2. 配置的項目的URL可能下載您commit-msg
  3. 重啓格里特服務器

例如的gerrit.installCommitMsgHookCommand我格里特服務器值:
gitdir=$(git rev-parse --git-dir); wget -qO ${gitdir}/hooks/commit-msg http://myservername/hooks/commit-msg; chmod a+x ${gitdir}/hooks/commit-msg

當我把一個承諾我格里特服務器沒有提交信息的更改-ID行,我會得到如下提示:


遠程:處理變化:參考文獻:1,做
遠程:錯誤:缺少變化-ID在提交信息頁腳
遠程:
remote:提示:要自動插入Change-Id,請安裝掛鉤:
remote:gitdir = $(git rev-parse --git-dir); wget -qO $ {gitdir}/hooks/commit-msg http://myservername/hooks/commit-msg; CHMOD一個+ X $ {gitdir} /鉤/提交-MSG
遠程:然後修改提交:
遠程:git的承諾--amend

通過閱讀產品gerrit.installCommitMsgHookCommand的描述格里特文檔中,你可以看到它的工作原理。