强制 code review:reviewboard+svn 的方案

强制 code review:reviewboard+svn 的方案

分类: Python 5965人阅读 评论(32) 收藏 举报
赖勇浩( http://laiyonghao.com)
我们团队在开发《天下盛境》项目的时候,制定和执行了比较好的 code review 策略,总结下来有几个优点:一是代码风格可控,代码质量有一定提升;二是新员工入职后能够得到更多人的指导,成长非常快;三是小 bug 频出的情况比我做《天》之前的项目少了至少一个数量组。当时我们的 code review 策略是这样的:
  1. 使用 reviewboard 作为工具,通过 SVN hooks 强制每一次签入都是经过 review 的;
  2. 至少要有 2 个团队成员 ship it,才能够签入。
  3. ship it 的成员中,至少有一个是资深的团队成员。
code review 是如此的有效,以至于我经常向朋友推荐,有一些朋友使用之后,觉得把 reviewboard 跟 SVN 结果起来还是蛮有挑战的,主要是编写 SVN hooks 还是需要学习不少东西,所以基本上他们都放弃了。今天我把 reviewboard-svn-hooks 项目修改、发布出来,方便大家使用。

安装

因为项目已经提交到 pypi( http://pypi.python.org/pypi/reviewboard-svn-hooks),所以简单地在命令行执行:
  1. easy_install reviewboard-svn-hooks  
easy_install reviewboard-svn-hooks就可以安装成功了,安装时,可能需要管理员权限(linux/windows都可能需要)。

配置

安装后,需要对 reviewboard-svn-hook 项目进行配置。根据操作系统的不同,存储配置文件的目录也是不同的。在 linux 系统下,它的位置是在 /etc 下,在 windows 系统下,它的位置在 %ALLUSERSPROFILE% 目录下(具体指哪个目录,请参考 http://en.wikipedia.org/wiki/Environment_variable#Default_Values_on_Microsoft_Windows)。在本文中,以 $CONFDIR 指代之。打开 $CONFDIR/reviewboard-svn-hooks/conf.ini 文件,解释如下:
  1. [common]  
  2. # 是否记录 debugging 输出,0 为不输出,其它值为输出  
  3. debug = 0  
  4.   
  5. [reviewboard]  
  6. # reviewboard 的网址  
  7. url=  
  8. # reviewboard 的用户名密码,这样才能够通过 http API 访问到 reviewboard 中的 review request 的状态  
  9. username=  
  10. password=  
  11.   
  12. [rule]  
  13. # 最少需要有几个 ship it  
  14. min_ship_it_count =  
  15. # 最少需要有几个专家 ship it  
  16. min_expert_ship_it_count =  
  17. # 专家的 reviewboard 用户名,使用半角逗号分格  
  18. experts =  
[common] # 是否记录 debugging 输出,0 为不输出,其它值为输出 debug = 0 [reviewboard] # reviewboard 的网址 url= # reviewboard 的用户名密码,这样才能够通过 http API 访问到 reviewboard 中的 review request 的状态 username= password= [rule] # 最少需要有几个 ship it min_ship_it_count = # 最少需要有几个专家 ship it min_expert_ship_it_count = # 专家的 reviewboard 用户名,使用半角逗号分格 experts =

SVN hooks 配置

假定你的 SVN 仓库目录的 $REPOS,并且从来没有设置过 SVN hooks。如果你之前已经配置过 pre-commit,请参考下述脚本自己想办法调用 strict_review 应用程序。

linux

打开 $REPOS/hooks 目录,把 pre-commit.tmpl 改名为 pre-commit,记得加上执行权限。用文本编辑器打开 pre-commit 文件,把里面的内容全部删除掉,替换为下列内容:

  1. REPOS="$1"  
  2. TXN="$2"  
  3. strict_review $REPOS $TXN  
  4. exit $?  
REPOS="$1" TXN="$2" strict_review $REPOS $TXN exit $?

至此,配置就完成了。

windows

打开 $REPOS/hooks 目录,把 pre-commit.tmpl 改名为 pre-commit.bat。用文本编辑器打开 pre-commit 文件,把里面的内容全部删除掉,替换为下列内容:

  1. setlocal  
  2. set REPOS=%1  
  3. set TXN=%2  
  4. strict_review "%REPOS%" "%TXN%"  
  5. exit %errorlevel%  
setlocal set REPOS=%1 set TXN=%2 strict_review "%REPOS%" "%TXN%" exit %errorlevel%

至此,配置就完成了。

与已经使用过的 reviewboard 集成

如果你之前已经使用 reviewboard 做过若干次 code review,那么你还有一步工作需要做:把之前使用过的 review request id 废掉。首先请找出并记下你们使用过的最大的 review request id,然后在命令行执行如下命令:
  1. init_used_rid_db $CONFDIR/rb-svn-hooks-used-rid.db $MAX_REQ_ID  
init_used_rid_db $CONFDIR/rb-svn-hooks-used-rid.db $MAX_REQ_ID

其中 $CONFDIR 的值在上文已经提到,$MAX_REQ_ID 就是前面说的使用过的最大的 review request id。

review 流程

团队成员在提交代码之前,需要先使用 post-review 工具在 reviewboard 上创建一个 review request。一个配置良好的 reviewboard 能够自动发送邮件给所有成员,收到邮件通知后大家抽空去 review 代码,而 review 结果也会通过邮件知会给大家,所以发起 review 的同事能够即时了解到 review request  的状态。当收集到足够多的 ship it 时,他就能够向 SVN 提交变更了,唯一需要注意的事项是要在 log message 里写上符合正则表达式 r'review:([0-9]+)' 的信息,比如 review:199 表示这次提交的变更对应 ID 为 199 的 review request,当 strict_review 这个 hook 检测到 review request 199 符合预设的条件后,就会放行让变更进入仓库。

 

其它

最后,如果在使用中有任何问题,请到 http://code.google.com/p/reviewboard-svn-hooks/issues/list 提 issue 告诉我。

转载于:https://www.cnblogs.com/SophiaTang/archive/2012/02/18/2356859.html

强制 code review reviewboard+svn 的方案 阅读详情

相关推荐

使用reviewboard和svn进行代码审查配置全过程文档

里面的文档是我搭建svn服务器及使用reviewboard进行代码审查的整个过程记录,有安装过程,有遇到的问题解决,有使用方法。都是本人亲测,靠谱。

ReviewBoard+SVN配置强制code review

下载reviewboard-svn-hooks: http://pypi.python.org/pypi/reviewboard-svn-hooks 解压并进入解压后的目录进行安装: python setup.py install 安装之后修改如下文件: /etc/reviewboard-svn-hooks/conf.ini [common] # 是否输出debug级别lo...

Button的博客 1万+

独立游戏开发者的新武器:实测腾讯混元3D自动绑骨,搭配Mixamo让角色动画制作效率翻倍

本文实测腾讯混元3D自动绑骨功能与Mixamo动画库的协同使用,显著提升独立游戏开发者的角色动画制作效率。通过解决卡通角色绑骨偏差、优化骨骼权重及动画状态机配置,使原本两周的流程缩短至三天,并分享Unity中的性能优化与版权合规要点。

weixin_42662605的博客 489

代码Review工具upsourse的部署

第1步 解压压缩包找到Upsource目录下的bin目录下的upsource.bat文件,双击启动

cplasf2012的博客 637

Jenkins测试详细使用教程(二):jenkins两种主要构建方法

Jenkins有两种定义构建作业的主要方法:(自由风格项目)和Pipeline(流水线项目)。

m0_62825058的博客 2434

MQTT(轻量级消息中间件)基本使用指南

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是一种轻量级的发布 / 订阅模式(Pub/Sub)消息传输协议,专为低带宽、不稳定网络环境设计,广泛应用于物联网(IoT)、移动设备、传感器网络等场景(如空气净化器、智能家居设备的远程控制)。Eclipse Mosquitto 是一款轻量级、开源的 MQTT 消息服务器(Broker),由 Eclipse 基金会维护,专为低资源消耗和易用性设计。

墨鸦的博客 1万+

Code Review : Review Board + Svn

ReviewBoard + Svn

wenfh2020的专栏 1万+

解决‘GLIBC_2.28 not found‘错误:手把手教你升级glibc到最新版(附中文乱码修复)

本文提供了一份详尽的Linux系统glibc升级实战指南,旨在解决常见的'GLIBC_2.28 not found'错误。文章不仅涵盖从风险评估、环境准备到编译安装的完整流程,还特别加入了精简本地化数据以修复中文乱码的实用技巧,帮助管理员和开发者在安全可控的前提下完成系统核心库的升级。

a1b2c3d的博客 1344

Eclipse SubVersion ReviewBoard配置强制Code Review 机制

环境: Centos7 SVN 代码仓库正在使用(python环境为2.6)新的版本部署测试过有问题 ReviewBoard 已经在使用 Eclipse 已经在使用 开始: 下载   #首先安装”reviewboard-svn-hooks”,下载地址如下: #http://pypi.python.org/pypi/reviewboard-svn-hooks python setu...

rede 2382

LPDDR6来了!到底比LPDDR5/5X强在哪?从速度到总线,技术细节一次说清!

LPDDR6不仅仅是速度快点、位宽大点那么简单,它是一次架构级的革新,从引脚、总线、时钟管理到Burst协议全部升级。🎯我们正在迈入一个“AI优先”的时代,内存架构也必须跟上。对于做芯片、做整机、做系统的你,理解LPDDR6的技术变化,提前规划测试方案,是现在就该启动的动作!

weixin_43199439的博客 1284

FFmpeg + Qt 实现摄像头采集与 MP3 背景音乐 RTSP 推流

在直播或视频监控场景中,我们经常需要将摄像头画面与背景音乐混合后推送到 RTSP 服务器。本文将详细介绍如何使用Qt框架结合摄像头实时采集(Windows 下使用dshow,Linux 使用v4l2视频预览(显示为 QImage)视频 H.264 编码 + RTSP 推流从 MP3 文件读取音频,重采样为 AAC 编码并推流循环播放音频文件解决中文文件路径打开失败的问题文章将剖析每个技术环节的关键代码,并给出完整的类实现。

weixin_45397344的博客 504

从“不太差”到“卓越”

赖勇浩(http://laiyonghao.com)今天一个老友跟我说可以帮忙维护一下 reviewboard-svn-hooks(https://pypi.python.org/pypi/reviewboard-svn-hooks),聊起这货到底有什么问题,我说“部署在 windows 下的时候各种兼容性小问题,我又不用 windows 做服务器,改起来各种艰难。”他说还有很多人用 wind...

weixin_30407099的博客 58

4、基于STM32 NUCLEO - F030R8开发板的嵌入式编程入门

本文详细介绍了如何在STM32 NUCLEO-F030R8开发板上实现LED闪烁功能,作为嵌入式编程的入门实践。内容涵盖开发板组成、跳线设置、项目创建、代码编写与解析、编译运行步骤,以及常见问题解决方法和拓展应用。通过本文学,习者可以掌握嵌入式开发的基本流程,并为后续深入学习打下基础。

m9n0o的博客 83
上一篇: python 函数参数的传递
下一篇: 创建成功的Python项目
JasonChou0913
博客等级 码龄12年 1粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值