強制 code review:reviewboard+svn 的方案
http://blog.csdn.net/lanphaday/article/details/7162907
我們團隊在開發《天下盛境》項目的時候,制定和執行了比較好的 code review 策略,總結下來有幾個優點:一是代碼風格可控,代碼質量有一定提升;二是新員工入職后能夠得到更多人的指導,成長非常快;三是小 bug 頻出的情況比我做《天》之前的項目少了至少一個數量組。當時我們的 code review 策略是這樣的:
使用 reviewboard 作為工具,通過 SVN hooks 強制每一次簽入都是經過 review 的;
至少要有 2 個團隊成員 ship it,才能夠簽入。
ship it 的成員中,至少有一個是資深的團隊成員。
code review 是如此的有效,以至于我經常向朋友推薦,有一些朋友使用之后,覺得把 reviewboard 跟 SVN 結果起來還是蠻有挑戰的,主要是編寫 SVN hooks 還是需要學習不少東西,所以基本上他們都放棄了。今天我把 reviewboard-svn-hooks 項目修改、發布出來,方便大家使用。
安裝
因為項目已經提交到 pypi(http://pypi.python.org/pypi/reviewboard-svn-hooks),所以簡單地在命令行執行:
view plain
easy_install reviewboard-svn-hooks
就可以安裝成功了,安裝時,可能需要管理員權限(linux/windows都可能需要)。
配置
安裝后,需要對 reviewboard-svn-hook 項目進行配置。根據操作系統的不同,存儲配置文件的目錄也是不同的。在 linux 系統下,它的位置是在 /etc 下,在 windows 系統下,它的位置在 %ALLUSERSPROFILE% 目錄下(具體指哪個目錄,請參考http://en.wikipedia.org/wiki/Environment_variable#Default_Values_on_Microsoft_Windows)。在本文中,以 $CONFDIR 指代之。打開 $CONFDIR/reviewboard-svn-hooks/conf.ini 文件,解釋如下:
view plain
[common]
# 是否記錄 debugging 輸出,0 為不輸出,其它值為輸出
debug = 0
[reviewboard]
# reviewboard 的網址
url=
# reviewboard 的用戶名密碼,這樣才能夠通過 http API 訪問到 reviewboard 中的 review request 的狀態
username=
password=
[rule]
# 最少需要有幾個 ship it
min_ship_it_count =
# 最少需要有幾個專家 ship it
min_expert_ship_it_count =
# 專家的 reviewboard 用戶名,使用半角逗號分格
experts =
SVN hooks 配置
假定你的 SVN 倉庫目錄的 $REPOS,并且人來沒有設置過 SVN hooks。打開 $REPOS/hooks 目錄,把 pre-commit.tmpl 改名為 pre-commit,如果是 linux 系統,記得加上執行權限。
用文本編輯器打開 pre-commit 文件,把里面的內容全部刪除掉,替換為下列內容:
view plain
REPOS="$1"
TXN="$2"
strict_review $REPOS $TXN
exit $?
至此,配置就完成了。如果你之前已經配置過 pre-commit,請參考上述腳本自己想辦法調用 strict_review 應用程序。
與已經使用過的 reviewboard 集成
如果你之前已經使用 reviewboard 做過若干次 code review,那么你還有一步工作需要做:把之前使用過的 review request id 廢掉。首先請找出并記下你們使用過的最大的 review request id,然后在命令行執行如下命令:
view plain
init_used_rid_db CONFDIR/rb-svn-hooks-used-rid.db MAX_REQ_ID
其中 CONFDIR 的值在上文已經提到,MAX_REQ_ID 就是前面說的使用過的最大的 review request id。
其它
最后,如果在使用中有任何問題,請到 http://code.google.com/p/reviewboard-svn-hooks/issues/list 提 issue 告訴我。