自动提交Git branch代码评审到Review Board系统
背景
敏捷软件开发中,越小的反馈环,意味着软件质量越容易得到保证。
作为组件团队,我们的开发任务中,往往存在一些特性涉及到几十个功能点,开发周期持续数周或数月的情况。如何在开发过程中保证软件质量,是个很重要的话题。进行有效的细粒度的代码评审,是常见的手段之一。但是这一希望在落地时,多多少少会遇到些来自方方面面的阻力:
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--
自动提交Git branch代码评审到Review Board系统的更多相关文章
- 谈谈代码评审(code review)
什么是代码评审(code review)? 根据维基百科的定义,代码评审是一种通过若干人员检阅源代码方式来进行的软件质量保证活动.根据软件工程的经典理论,代码评审应该是收益很高的活动,因其产生在Cod ...
- git branch
使用git管理工具,branch 应该是我们接触最多的.不论我们是修复bug,还是做项目,都会新开branch,工作完成后再合并. 然而对一些初学者,对git的一些命令知之甚少,这里,给大家写一些常用 ...
- GIT:创建、查看分支命令(git branch -vv)
在开发过程中一般会用到Git进行版本管理,创建查看分支并与远程仓库交互是非常常见的操作. branch分支 是指在开发主线中分离出来的,做进一步开发而不影响到原来的主线. Git存储的不是一系列的更改 ...
- IDEA工具java开发之 常用插件 git插件 追加提交 Code Review==代码评审插件 撤销提交 撤销提交 关联远程仓库 设置git 本地操作
◆git 插件 请先安装git for windows ,git客户端工具 平时开发中,git的使用都是用可视化界面,git命令需要不时复习,以备不时之需 1.环境准备 (1)设置git (2)本地操 ...
- .NET Core下操作Git,自动提交代码到 GitHub
.NET Core 3.0 预览版发布已经好些时日了,博客园也已将其用于生产环境中,可见 .NET Core 日趋成熟 回归正题,你想盖大楼吗?想 GitHub 首页一片绿吗?今天拿她玩玩自动化提交代 ...
- # .NET Core下操作Git,自动提交代码到
.NET Core下操作Git,自动提交代码到 转自博客园(阿星Plus) .NET Core 3.0 预览版发布已经好些时日了,博客园也已将其用于生产环境中,可见 .NET Core 日趋成熟 回归 ...
- GIt+jenkins代码自动上线
代码自动上线功能 企业部署代码上线是件比较麻烦的事情,还好我们有jenkins这个持续集成的软件可以帮助我们做很多的事情,现在我们就 来测试用jenkins推送代码上线. 我们这里测试的是一个html ...
- Pull Request的过程、基于git做的协同开发、git常见的一些命令、git实现代码的review、git实现版本的管理、gitlab、GitHub上为开源项目贡献代码
前言: Pull Request的流程 1.fork 首先是找到自己想要pull request的项目, 然后点击fork按钮,此时就会在你的仓库中多出来一个仓库,格式是:自己的账户名/想要pull ...
- ubuntu上搭建review board代码评审站点
Reviewboard是一个开源个人可以免费使用的代码评审框架,貌似现在有越来越多的公司也开始使用reviewboard作为公司的代码评审工具. 今天早上试了一下,搭建过程非常方便简单,按照网页提示即 ...
随机推荐
- 动力节点Java培训告诉你Java线程的多功能用法
现在的java开发可谓是八仙过海各显神通啊!遥想当下各种编程语言萎靡不振,而我Java开发异军突起,以狂风扫落叶之态,作为Java培训行业的黄埔军校,为了守护Java之未来,特意总结了一些不被人所熟知 ...
- MYSQL存储过程、游标、触发器
MySQL5 中添加了存储过程的支持. 大多数SQL语句都是针对一个或多个表的单条语句.并非所有的操作都怎么简单.经常会有一个完整的操作需要多条才能完成 存储过程简单来说,就是为以后的使用而保存的一 ...
- jquery + header
官网上搜索headers 基本用法(直接用下楼上的代码了) $.ajax({ //请求类型,这里为POST type: 'POST', //你要请求的api的URL url: url , //是否使用 ...
- oracle数据库_实例_用户_表空间之间的关系(转)
数据库:Oracle数据库是数据的物理存储.这就包括(数据文件ORA或者DBF.控制文件.联机日志.参数文件).其实Oracle数据库的概念和其它数据库不一样,这里的数据库是一个操作系统只有一个库.可 ...
- mysql 存储过程在批处理数据中的应用
最近批处理数据的时候,突然想到:为什么不使用存储过程进行数据批处理? 为什么要进行批处理? 自答:减少数据库连接次数,提高效率. 存储过程批处理数据的优点:一次编译,永久执行. 这次的批处理逻辑较简单 ...
- 2014 Multi-University Training Contest 9#6
2014 Multi-University Training Contest 9#6 Fast Matrix CalculationTime Limit: 2000/1000 MS (Java/Oth ...
- Unix/Linux进程间通信(一):概述
序 Linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的.而对Unix发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进 ...
- 兼容IE8以下浏览器input表单属性placeholder不能智能提示功能
当前很多表单提示使用了表单属性placeholder,可这属性不兼容IE8以下的浏览器,我自己写了一个兼容处理js // 兼容IE8以下浏览器input不能智能提示功能 if(navigator.ap ...
- rabbitmq 简单梳理
概念: 生产者(Producer,简写P),负责发布消息. “交换机”(Exchange, 简写X), 负责中转消息. 路由(Route, 简写R), 即 X->Q的路线名. 消息队列 (Que ...
- JS date常用代码积累
Date.prototype.Format = function(fmt) { var o = { "M+" : this.getMonth()+1, //月份 "d+& ...