2016-03-11

如何設定Gerrit的Hook機制

Gerrit是一套Google工程師撰寫的開源code review系統,底下可以銜接多種類的版本控制工具,最近因為Android Studio的開發導入Gerrit作為code review的系統開始竄紅;以下介紹Gerrit如何設定其Hook機制。

[安裝環境]
  • 作業系統:Ubuntu 14.04 
  • Gerrit版本:2.11
  • 版本控制:Git

[設定步驟]
Step 1. 請正確安裝Gerrit系統(略)

Step 2. 修改gerrit的設定檔,把hook的設定補進去,目錄在${your gerrit home}/etc/gerrit.config;請根據自己的需求設定gerrit支援的hook階段

[hooks]
    path = /etc/gerrit/hooks
    patchsetCreatedHook = patchset-created
    # ...you can add more hooks

Step 3. 將script設定為可執行

sudo chmod +x /etc/gerrit/hooks/patchset-created

Step 4. 重啟Gerrit

sudo /etc/init.d/gerrit restart

Step 5. patchset-created是你要執行hook的script,可以換成任何您熟悉的script語言,置放在/etc/gerrit/hooks目錄底下,注意檔名要正確才能對應;先用bash來測試是否正常執行。

#!/bin/sh
echo 'hook setting test.' > hook-gen.txt;
注意:hook-gen.txt會產生到你git到的repo的project目錄,原則上應該是/etc/gerrit/git/${project}。

Step 5. 從本地端執行git commit push,將code送到Gerrit,然後當patchset被產生的時候就會執行patchset-created這支script。

5 則留言:

  1. 請問,在gerrit.config新增設定hooks之後,一定要重啟Gerrit嗎?(目前我的Gerrit server是在windows環境)

    回覆刪除
    回覆
    1. 理論上在Linux環境改了設定,重啟才會生效;注意是重啟gerrit那支process,不是OS喔。

      刪除
    2. 因為我的Gerrit Server是架在Windows Server 2008的環境,所以想了解更改gerrit.config後,是否也要跟Linux環境一樣要重啟Gerrit

      刪除
    3. 需要重啟。

      The contents of the etc/gerrit.config file are cached at startup by Gerrit. If you modify any properties in this file, Gerrit needs to be restarted before it will use the new values.

      刪除
    4. 我重啟了。Thank you~~~

      刪除