代码评审(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 命令官方指南