Review Board 的使用理念主要基于“Review Request”。开发人员提交一个补丁,同时生成一个 Review Request ;其他人针对这个补丁提供 Review 意见(可以对特定代码行发表 Review 意见,并且可以对 Review 意见进行回复讨论)。也可以利用 Review Board 提供的 RBTools 包中的 post-review 指令从代码库中指定几个版本自动生成一个 Review Request 。

总体来说,利用 Review Board 组织基于互联网的远距离协同开发还是不错的,可以有一个方便的界面对代码开展讨论。只是要有效利用 Review 这种办法,需要开发组形成一套包括 Review 在内的协作工作流程。

1.  基本资源

类似解决方案:

  • rietveld:这个是 Python 语言发明人 Guido 老兄搞出来的 Review 管理工具,基于 Django 和 GAE 。Review Board 基本上是参考这玩意儿搞出来的重新实现,两者在基本概念上应该是一致的。

2.  安装部署

部署过程参考Administration Guide

2.1  在 lighttpd 中增加 Review Board 的配置文件

rb-site install 指令会自动生成 lighttpd 的配置文件,也即 conf 目录下的 lighttpd.conf 文件。可以在全局 lighttpd 文件中使用 include 命令引用这个配置文件,比如在 /etc/lighttpd/lighttpd.conf 中增加:

 include "lighttpd_reviewboard.conf"

但 include 命令似乎不支持指定路径。所以我建立了一个符号链接,把 Review Board 的 lighttpd.conf 映射成 /etc/lighttpd/lighttpd_reviewboard.conf 文件。

2.2  解决 lighttpd 下的 404 错误问题

直接用 Review Board 自动生成的 lighttpd.conf 有可能在访问页面时总是遇到 404 错误。如果编辑 conf/settings_local.py 文件,把 Debug 打开(修改 DEBUG = True),再遇到 404 错误时,浏览器可能会给出类似下面这样的提示:

Using the URLconf defined in djblets.util.rooturl, Django tried these URL
patterns, in this order:

   1. ^ ^admin/
   2. ^ ^media/(?P<path>.*)$
   3. ^ ^account/
   4. ^ ^api/(?P<api_format>json|xml)/
   5. ^ ^r/
   6. ^ ^reports/
   7. ^ ^dashboard/$
   8. ^ ^users/$
   9. ^ ^users/(?P<username>[A-Za-z0-9@_\-\.]+)/$
  10. ^ ^groups/$
  11. ^ ^groups/(?P<name>[A-Za-z0-9_-]+)/$
  12. ^ ^groups/(?P<name>[A-Za-z0-9_-]+)/members/$
  13. ^ ^feeds/rss/(?P<url>.*)/$
  14. ^ ^feeds/atom/(?P<url>.*)/$
  15. ^ ^account/logout/$
  16. ^ ^$
  17. ^ ^iphone/

The current URL, reviewboard.fcgi/dashboard/, didn't match any of these.

这似乎是 Lighttpd 的 FastCGI 界面的一个 Bug 。应该和 Bug Incorrect PATH_INFO when FastCGI is serving "/" 有些关系。以前在用 Trac 的时候可以参考 Relative paths broken when project at root URI under lighttpd with fastcgi 绕过。但 Review Board 基于 Django ,我还真不知道怎么弄。

最后只好把 Lighttpd 升级到 1.4.23 以上的版本,并且给 lighttpd.conf 打了如下补丁,终于正常工作了。

19c19
<         "/reviewboard.fcgi" => (
---
>         "/" => (
23a24,26
>
>                 # needed if trac_prefix is empty; and you need >= 1.4.23
>                 "fix-root-scriptname" => "enable",
36c39
<         "^(/.*)$" => "/reviewboard.fcgi$1",
---
>         "^(/.*)$" => "$1",

GlossyBlue theme adapted by David Gilbert
Powered by PmWiki