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