首页 > 代码库 > svn集成ReviewBoard,让post-commit hook后台运行

svn集成ReviewBoard,让post-commit hook后台运行

代码评审(Code Review)不但可以提高质量,而且还是一个知识共享和指导的极好的手段。

代码评审(CodeReview)一般有两种形式:pre-commit-review,post-commit-review。

pre-commit-review是指代码提交到代码库进行代码评审;

post-commit-review是指代码提交到代码库进行代码评审。


ReviewBoard是一个开源的基于web的代码评审工具,支持Subversion,CVS,Git和Mercurial版本控制系统。

svn可以通过post-commit hook与ReviewBoard集成,实现post-commit-review。


其实现原理为:

用户在提交代码至svn完成后触发post-commit钩子脚本

在svn post-commit hook中调用RBtools的rbt post命令连接ReviewBoard自动提交代码评审请求(ReviewRequest)

注:RBtools是ReviewBoard官方提供的python命令行工具。它是用python API与ReviewBoard进行交互。


在使用中出现了如下问题:

用户需要等待post-commit hook执行完毕后才算提交完成

这样直接导致了用户提交代码等待时间过长,影响了用户体验

于是想到让post-commit中调用的rbt post命令在后台运行

这样post-commit就无需等待rbt post执行完成可以发送完rbt post命令后直接返回


得知在linux中&命令可以把作业放到后台执行

可是在post-commit hook中的rbt命令后加了&并不起作用

通过在google上搜索

终于在stackoverflow上找到了这篇文章,最终解决了问题

原来还需要用2>&1把所有的错误输出转换成标准输出,使得错误输出和标准输出都被重定向到一个叫做out.file 的文件中

其中2表示错误输出,1表示标准输出

rbt post "$args" 2>&1 &


不得不说,google和stackoverflow 很强大啊@!



其他:

svn post-commit脚本编写可以参考:reviewboard源码中用户贡献的样例

rbt post 命令官方指南



svn集成ReviewBoard,让post-commit hook后台运行