点击上方“中兴开发者社区”,关注我们
每天读一篇一线开发者原创好文

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命令即实现相同操作。
!!注意
2.4 评审流程处理
2.4.1 评审入口
My->Changes 里选择评审单
2.4.2 评审界面和流程规则
主界面1:关注1、commit的相关内容;2、change ID; 3、change status,其中Needs Workflow是评审单的状态(change状态含义说明);

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

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


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


Gerrit评审步骤和通过标准:
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 checkout bugfix/ec61100123456
git rebase -i master
git push origin HEAD:refs/for/master
2.4.4 评审过程通过,提交代码
整个评审流程通过(此时评审单状态为Ready to Submit),在评审操作界面会出现按钮,点击该按钮提交代码到正式的目标分支。几点注意:
