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

原创
2014/09/26 21:56
阅读数 2.7W

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


展开阅读全文
打赏
2
38 收藏
分享
加载中

引用来自“donhui”的评论

引用来自“golang”的评论

引用来自“golang”的评论

请问你这个自动提交是怎样配置的?脚本是什么?谢谢!

引用来自“donhui”的评论

用的rbt post命令,具体脚本时间久了,没记录
你是自己写的一个Post-Commit的hooks吗?是在svn服务器端进行配置的吗?谢谢!

回复@golang : 是的
我看你说是参考了https://github.com/reviewboard/reviewboard/blob/master/contrib/tools/svn-hook-postcommit-review这个。请问是怎么调用这个?没看太明白,谢谢!
2018/01/25 18:20
回复
举报
donghui2020博主

引用来自“golang”的评论

引用来自“golang”的评论

请问你这个自动提交是怎样配置的?脚本是什么?谢谢!

引用来自“donhui”的评论

用的rbt post命令,具体脚本时间久了,没记录
你是自己写的一个Post-Commit的hooks吗?是在svn服务器端进行配置的吗?谢谢!

回复@golang : 是的
2018/01/25 18:11
回复
举报

引用来自“golang”的评论

请问你这个自动提交是怎样配置的?脚本是什么?谢谢!

引用来自“donhui”的评论

用的rbt post命令,具体脚本时间久了,没记录
你是自己写的一个Post-Commit的hooks吗?是在svn服务器端进行配置的吗?谢谢!
2018/01/25 18:10
回复
举报
donghui2020博主

引用来自“golang”的评论

请问你这个自动提交是怎样配置的?脚本是什么?谢谢!
用的rbt post命令,具体脚本时间久了,没记录
2018/01/25 18:03
回复
举报
请问你这个自动提交是怎样配置的?脚本是什么?谢谢!
2018/01/25 17:53
回复
举报
更多评论
打赏
5 评论
38 收藏
2
分享
返回顶部
顶部