背景

敏捷软件开发中,越小的反馈环,意味着软件质量越容易得到保证。

作为组件团队,我们的开发任务中,往往存在一些特性涉及到几十个功能点,开发周期持续数周或数月的情况。如何在开发过程中保证软件质量,是个很重要的话题。进行有效的细粒度的代码评审,是常见的手段之一。但是这一希望在落地时,多多少少会遇到些来自方方面面的阻力:

Review Board不支持Git branch的代码评审提交;

Git不熟,不知道怎么生产正确的patch文件来提交到Review Board上;

Review Board不会用,不知道怎么提交代码评审;

Review Board会用,但是提交过程繁琐,一两天就要提交一次,我怕麻烦;

我忘提交了代码评审了

团队的痛点就是我们努力改进的方向,我们希望有一套方案,能实现代码评审的自动提交,提交过程对开发人员透明,最大程度上减轻开发人员的心智负担,让开发人员专注于功能开发上。

实际上,这个自动化工具和实现方案已经有了,这就是本文分享的RBTool官网的用户手册有详细的文档说明,美中不足的是,没有提供一个完整的实施案例给用户参考,本文尝试填补这一块空白,疏漏之处,还望指正。

安装

本文主要关注Review Board代码评审自动提交的方案实施上,所以假设你已经有了一台可用的Review Board(后文以RB简称)服务器。RB服务器的安装、配置、使用不在赘述。

部署环境:

alex@alex-desktop:~/git/team_dev$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 10.04. LTS
Release: 10.04
Codename: lucid

安装RBTool:

如果你的计算机能访问外网,安装过程很简单:

sudo easy_install -U RBTools 

如果不能访问外网,需要手动下载如下安装包,并依次解压、运行 sudo python setup.py install 进行安装。

https://pypi.python.org/packages/source/a/argparse/argparse-1.4.0.tar.gz

https://pypi.python.org/packages/source/s/six/six-1.8.0.tar.gz

https://pypi.python.org/packages/source/R/RBTools/RBTools-0.7.5.tar.gz

运行如下命令,查看是否安装成功:

alex@alex-desktop:~/git/team_15000_dev$ rbt -v
RBTools 0.7.

配置

配置git选项reviewboard.url为你的RB服务器访问链接:

git config --global  reviewboard.url http://XXX.XXX.XXX.XXX/

在你的git工作区目录下,创建RBTool的配置文件.reviewboardrc,示例如下(个人信息以XXX代替)

alex@alex-desktop:~/git/team_dev$ cat .reviewboardrc
REPOSITORY = "XXX"
REVIEWBOARD_URL = "http://XXX.XXX.XXX.XXX/"
USERNAME = "XXX"
PASSWORD = "XXX"
TARGET_GROUPS = "CalabashBro"
TRACKING_BRANCH = "origin/XXX"

Repository:指定RB服务器中已经配置的repository仓库名;

REVIEWBOARD_URL:指定RB服务器访问链接;

USERNAME:指定RB服务器的用户登录名;

PASSWORD:指定RB服务器的用户登录密码;

TARGET_GROUPS:指定代码评审Review request的Groups;

TRACKING_BRANCH:指定工作分支;若不指定,默认为origin/master分支;(适用于Git)

配置Git commit钩子脚本(如不需要自动提交代码评审功能,此步可以跳过):

alex@alex-desktop:~/git/team_dev/.git/hooks$ touch post-commit

alex@alex-desktop:~/git/team_dev/.git/hooks$ chmod +x post-commit

alex@alex-desktop:~/git/team_dev$ cat .git/hooks/post-commit
#!/bin/sh

rbt post -g -p

参数解释:

-g:根据git commit日志自动构造RB Review request的summary信息和description信息;

-p:自动构造和发布;如未指定,会构造一个RB Review request页面,但不会发布。

应用

如果配置了Git commit钩子脚本,commit代码时,就会自动触发提交一条RB Review request:

alex@alex-desktop:~/git/team_dev$ git commit -m 'Demo: auto to submit RB review request'
Review request # posted. http://10.46.74.230/r/6140/
http://10.46.74.230/r/6140/diff/
[gaoyun d461499] Demo: auto to submit RB review request
files changed, insertions(+)

自动提交的RB Review request截图:

如果没有配置Git commit钩子脚本,也可以在commit后,利用rbt手动提交RB Review request,比如:

指定REVISION的修改记录提交代码评审:

rbt post REVISION

指定(STARTREV,STOPREV]区间的修改记录提交代码评审:

rbt post STARTREV STOPREV

把当前未push的修改更新到已提交的代码评审请求中:

rbt post -r REVIEW_REQUEST_NUM

其他命令请参照官网的用户手册

祝玩的开心。

--EOF--

												

最新文章

  1. Oracle使用触发器和mysql中使用触发器的比较——学习笔记
  2. C++的友元类和友元函数实例
  3. PySide 简易教程<二>-------工欲善其事,必先利其器
  4. autolayout高度动态改变的一些体会
  5. android报错及解决1--Bitmap加载时,报bitmap size exceeds VM budget
  6. JavaScript入门(4)
  7. Class.forName()的理解
  8. FZU1862(线段树 或者 DP)
  9. cocos2dx CCTextFieldTTF
  10. 易语言 【寻找文本】命令的bug
  11. ios获取内核数目
  12. CF585E. Present for Vitalik the Philatelist [容斥原理 !]
  13. Viewport模版
  14. [C][代码实例]冒泡排序
  15. denyhosts、中文文档乱码、端口占用查询
  16. centos 解压
  17. SVM笔记
  18. jstree使用新的
  19. 20165228 2017-2018-2 《Java程序设计》第8周学习总结
  20. ROS的工作模式和ESXI网卡工作模式的关系

热门文章

  1. win10 64位安装memcache扩展和开启redis扩展
  2. 面试题目——《CC150》排序与查找
  3. CocoaPods 升级
  4. jquery 幻灯片 左右滚动
  5. js中的逻辑与(&&)和逻辑或(||)
  6. MYSQL提权方法
  7. jQuery入门(3)事件与事件对象
  8. Linux进程间通信(四):命名管道 mkfifo()、open()、read()、close()
  9. Linux下查看操作系统信息、内存情况及cpu信息:cpu个数、核心数、线程数
  10. git实践