如何用Gerrit进行评审

每天读一篇一线开发者原创好文

DevOps微课系列旨在帮助用户学习DevOps实践。

1 概述

本文详细介绍一般开发人员使用Gerrit代码评审系统基础设置和操作:包括获取代码,编辑并提交代码、添加评审员,进行代码评审、根据评审意见进行修改并再次提交,更正其他开发者提交的代码,如何解决合入冲突

2 Gerrit评审流程操作指南

评审流程图(正常流程&待修订)

2.1 使用检出代码

作用:clone 时同时下载commit-msg hook,hook的作用是在commit的时候生成change-ID(评审单的ID)

2.2 新建分支修改代码

例子:基于master分支拉出bug分支修改ec61100123456,然后提交评审

git checkout -b bugfix/ec61100123456 -t origin/master

修改,add,commit——注意每次commit都会生成一个change-ID,即一个评审

2.3 提交评审

git push origin HEAD:refs/for/master

在提交评审的同时,设置评审人

git push origin HEAD:refs/for/master%r=zhao**@zte.com.cn,r=jiang**@zte.com.cn

命令太长?可以使用别名保存常用的命令参数,如:

git config --global alias.rh "push origin HEAD:refs/for/master%r=zhao**@zte.com.cn,r=jiang**@zte.com.cn"

以后直接敲 git rh命令即实现相同操作。

!!注意

push到refs/for/master 而非master

提交时会自动在gerrit服务器上生成一个评审单,push命令返回结果时会提示评审单路径

2.4 评审流程处理

2.4.1 评审入口

My->Changes 里选择评审单

2.4.2 评审界面和流程规则

主界面1:关注1、commit的相关内容;2、change ID; 3、change status,其中Needs Workflow是评审单的状态(change状态含义说明);

主界面2:评审文件清单,点击文件查看详细差异

点击某个文件,可打开差异界面浏览差异,在该界面可以:

添加文件级comment

选取某行/段 ,添加comment

选择不同的patch,比较代码差异(base表示基础代码,开发者每修订一次代码,重新提交评审都会生成一个新的patch。)

在线编辑文件

主界面3:评审操作界面,Add…添加评审人,Reply...回复评审意见,Post发布评审意见,打分情况显示在最下方

Gerrit评审步骤和通过标准:

Gerrit评审有3个步骤:Code-Review(检查代码)、Verified(验证)、Workflow(工作流),3个步骤没有先后依赖关系,但是必须3个全部走完且通过代码才可以正式提交;

评审流程通过必须同时满足:

a. Code-Review 有+2。(多人+1不等同于+2,-2优先级大于+2,且流程打回)

b. Verfied 有+2 (多人+1不等同于+2,-2优先级大于+2,且流程打回。这步可以为CI系统验证,CI运行完毕后由CI账号自动反馈结果并打分,如下图为CI验证通过+2:)

c. Workflow +1 (一般由core组成员控制,用途为在整体流程上控制评审)

当每个步骤字体变为绿色时即表示该步骤已经通过,如果为红色代表该步骤不通过。

主界面4:评审操作历史,单击某个历史可以查看详细情况

2.4.3 评审不通过,修订commit重新提交patch,进行评审

!!提醒:注意要使用commit --amend功能来修订你的提交,而非新增一个commit,新增commit会新生成一个评审单

git commit --amend

git push origin HEAD:refs/for/master

♥ 重新提交时有冲突?(使用rebase把分支重定位到目标分支最新,然后重新提交评审)

git checkout master

git pull origin master

git rebase -i master

git push origin HEAD:refs/for/master

2.4.4 评审过程通过,提交代码

整个评审流程通过(此时评审单状态为Ready to Submit),在评审操作界面会出现按钮,点击该按钮提交代码到正式的目标分支。几点注意:

前提是该成员拥有submit权限,有些项目的策略是代码修改成员并没有submit权限,由proj-core人员来进行submit

也可以通过abandon 放弃评审

可以通过cherry pick 合并到其它目标分支

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180227B0YOBL00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券