基于gitlab的codereview
code review 的⽬的是提⾼代码质量,减少开发bug,俗话说,三⼈⾏必有我师,众⼈拾柴⽕焰⾼。
gitlab提供了code review机制,对基于gitlab的code review,直接以具体例⼦的形式做个实践总结。
gitlab提供了两种代码merge机制:
1. 在本地将源分⽀(Source branch)代码合并到⽬标分⽀(Target branch),然后Push到⽬标分⽀(Target branch)
2. 将源分⽀(Source branch)Push到远端,然后在GitLab指定⽬标分⽀(Target branch)发起Merge Request,对⽬标分⽀(Target
derted>出国留学文书写作
branch)拥有merge权限的⽤户执⾏Merge操作,完成合并。
这两种⽅式仅有第2种适合code review,所以我们要做的事情是设置权限,拒绝本地merge后push到远端的操作。在第2种⽅式中 发起merge request后,由有merge权限⽤户做code review,通过后执⾏merge操作。
具体操作如正⽂
⼀,分⽀设置
第⼀步,创建项⽬和分⽀。
分⽀结构和功能依据具体团队的规范来定,这⾥仅供参考。
创建项⽬并创建分⽀如下
创建分⽀
其中 relea为预发布分⽀,develop为测试分⽀,develop-1为开发分⽀。
relea,develop,master都是固定的分⽀,有固定的功能。eleca
本例中假设流程开发如下:
1. 每次需要新feature时,从master拉取开发分⽀,⽐如develop-1。
2. master有更新及时合并到develop-1,develop,以及relea。
3. develop-1开发完成后合并到develop,部署测试环境。
4. develop环境测试通过后,合并develop-1代码到relea环境,做预发布测试。
5. relea环境测试通过后,将develop-1代码合并到master,上线。
第⼆步,设置分⽀merge权限
这⼀步的是实现code review的关键,也就是控制分⽀的merge 权限。之后只有有merge权限的责任⼈
才能submit merge请求,没有merge权限的只能提交merge请求,等待有权限的review后submit,则合并成功
具体设置位置:
dim是什么意思项⽬⾸页→Settings->Repository→Protected Branches
权限设置页⾯
将master,develop,relea三个分⽀设置成只允许maintainers merge,不允许任何⼈push,也即在杜绝了上⽂说的从本地merge,push 到远端的情况
权限设置结果
⼆、具体操作
这⾥描述从代码修改,提交,发起merge请求,到code review后merge submit的整体流程。
开发分⽀代码修改,提交,push到远端
第⼀步
第⼀步 开发分⽀代码修改,提交,push到远端
feature的开发分⽀不做具体的保护设置,即开发⼈员可以修改后,add,commit,push origin,这⾥不做详细讲解,push之后,可以在分⽀页⾯看到相应commit⽇志。如下。
commit⽇志
第⼆步 create merge request
注意上图右上⾓有⼀个按钮,create merge request,发起merge请求后,进到页⾯
选择源分⽀和⽬标分⽀
选择source branch 和Target branch,这⾥我选择的是develop-1到relea(假设到了预上线阶段),点击compare branches and continue。
pivot浏览器
发布merge request
页⾯中选择Assignee,指定reviewer,指定⼈会受到邮件。下⾯的approvers以及Approvals required,是批准⼈和最少批准个数。填写Approvals required后,必须经过指定个数以上的⼈批准才能合并。提醒英语
点击submit merge request。进到merge request页⾯。
第三步 code review
jpack
收到邮件的reviewer通过merge request 页⾯可以看到代码修改记录,并增加commond,其他⼈也可以通过commond进⾏讨论,⽆问题可以点击merge通过或者不通过则点击右下⾓的clo merge request。
lostandfound
review
第四步 查看所有merge请求
在项⽬页⾯的merge request页⾯可以看到所有open状态,clo状态和merged状态的merge 请求
三、可能遇到的问题
遇到冲突怎么办
多个分⽀向⼀个分⽀合并代码等流程中,往往会形成版本冲突。此时,提交merge request后的页⾯如下:
冲突页⾯.pngspeaking
我们发现,merge按钮置灰,同时出现了resolve conflicts以及merge locally的按钮。点击resolve confl
逃亡乐队
icts。出现解决冲突的页⾯
解决冲突.png
页⾯可以通过u ours指定使⽤当前分⽀(发起merge request的源分⽀)代码或者u theirs来指定使⽤⽬标分⽀代码。或者点击 edit inline 直接通过编辑页⾯编辑(更通⽤)。