强制 code review:reviewboard+svn 的方案

我们团队在开发《天下盛境》项目的时候,制定和执行了比较好的 code review 策略,总结下来有几个优点:一是代码风格可控,代码质量有一定提升;二是新员工入职后能够得到更多人的指导,成长非常快;三是小 bug 频出的情况比我做《天》之前的项目少了至少一个数量组。当时我们的 code review 策略是这样的:

  1. 使用 reviewboard 作为工具,通过 SVN hooks 强制每一次签入都是经过 review 的;
  2. 至少要有 2 个团队成员 ship it,才能够签入。
  3. ship it 的成员中,至少有一个是资深的团队成员。

code review 是如此的有效,以至于我经常向朋友推荐,有一些朋友使用之后,觉得把 reviewboard 跟 SVN 结果起来还是蛮有挑战的,主要是编写 SVN hooks 还是需要学习不少东西,所以基本上他们都放弃了。今天我把 reviewboard-svn-hooks 项目修改、发布出来,方便大家使用。

安装

因为项目已经提交到 pypi(http://pypi.python.org/pypi/reviewboard-svn-hooks),所以简单地在命令行执行:

  1. easy_install reviewboard-svn-hooks

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 文件,解释如下:

  1. [common]
  2. # 是否记录 debugging 输出,0 为不输出,其它值为输出
  3. debug = 0
  4. [reviewboard]
  5. # reviewboard 的网址
  6. url=
  7. # reviewboard 的用户名密码,这样才能够通过 http API 访问到 reviewboard 中的 review request 的状态
  8. username=
  9. password=
  10. [rule]
  11. # 最少需要有几个 ship it
  12. min_ship_it_count =
  13. # 最少需要有几个专家 ship it
  14. min_expert_ship_it_count =
  15. # 专家的 reviewboard 用户名,使用半角逗号分格
  16. experts =

[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 文件,把里面的内容全部删除掉,替换为下列内容:

  1. REPOS="$1"
  2. TXN="$2"
  3. strict_review $REPOS $TXN
  4. exit $?

REPOS="$1" TXN="$2" strict_review $REPOS $TXN exit $?至此,配置就完成了。如果你之前已经配置过 pre-commit,请参考上述脚本自己想办法调用 strict_review 应用程序。

与已经使用过的 reviewboard 集成

如果你之前已经使用 reviewboard 做过若干次 code review,那么你还有一步工作需要做:把之前使用过的 review request id 废掉。首先请找出并记下你们使用过的最大的 review request id,然后在命令行执行如下命令:

  1. init_used_rid_db CONFDIR/rb-svn-hooks-used-rid.db MAX_REQ_ID

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 告诉我。

分类:管理 时间:2015-05-01 人气:100
本文关键词: 软件工程
分享到:

相关文章

iOS 开发

Android 开发

Python 开发

JAVA 开发

开发语言

PHP 开发

Ruby 开发

搜索

前端开发

数据库

开发工具

开放平台

Javascript 开发

.NET 开发

云计算

服务器

Copyright (C) codeweblog.com, All Rights Reserved.

CodeWeblog.com 版权所有 闽ICP备15018612号

processed in 0.028 (s). 11 q(s)