基于GitLab的Merge Request代码评审
01 前言
Code Review(代码审查/评审)是目前所有IT公司研发团队都会做的一项工作,但是以何种方式进行一直没有找到好办法。本人目前所在公司code review都是在线下进行代码审查,但是这样的模式根本无法做到过程留痕。因此,最近正在探讨用GitLab的Merge Request或者Gerrit这样的工具进行过程管理。
这里详述一下如何通过Merge Request进行线上的代码审查。
02 角色权限
首先,在GitLab中的角色分为以下5种:Guest、Reporter、Developer、Maintainer、Owner。
具体权限可以参考官方文档https://docs.gitlab.com/ee/user/permissions.html
根据官方的权限介绍,Maintainer能够push代码到受保护分支,而Developer只能创建Merge Request,这就为团队推行强制代码审查并做到有迹可循提供了技术保证。
03 Merge Request 使用介绍
03-1 设置受保护分支
通过菜单 Project -> Settings -> Repository -> Protected Branches,然后按照下图步骤设置,最终可以得到第十步的结果:


03-2 创建及批核Merge Request
我们把本地修改的代码提交到个人远程分支上,并想把个人分支合并到某个Dev分支上用于SIT提测即可参考以下步骤。这里用从dev_sp16_man 合并到 Dev_Sprint16_Kid 作为例子。

第一步:Team1_Dev(开发人员)创建MR并提交,MR主要填写以下5个参数:(同步你可以根据团队情况选择勾选【remove source branch when merge request is accepted】)
Title
Description
Assignee
Source branch
Target branch


第二步:Team1_Leader登录,在【Merge Request】的角标已经提醒有一个request需要审核。

然后,在点击该merge request后,可以通过GitLab自带的Web IDE或者下载到本地IDE进行查看。

第三步:在代码审核无误后,可以添加comment并点击【Merge】进行代码合并,可以看到这时候的左上角状态仍然是【Open】。

第四步:在点击【Merge】后,可以看到代码合并已经成功,这时候左上角状态变为merged

03-3 历史查询
通过菜单 Project 选择你想进入的项目,然后点击【Merge Request】,然后再点击【All】即可展示所有的代码审查历史,这样就能在流程层面保证所有的代码合并是经过审核的,并可以做到有迹可循。

