基于gitlab的code review

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 branch)拥有merge权限的用户执行Merge操作,完成合并。
    这两种方式仅有第2种适合code review,所以我们要做的事情是设置权限,拒绝本地merge后push到远端的操作。在第2种方式中 发起merge request后,由有merge权限用户做code review,通过后执行merge操作。
    具体操作如正文

一,分支设置

第一步,创建项目和分支。

分支结构和功能依据具体团队的规范来定,这里仅供参考。

创建项目并创建分支如下

创建分支

其中 release为预发布分支,develop为测试分支,develop-1为开发分支。

release,develop,master都是固定的分支,有固定的功能。

本例中假设流程开发如下:

1. 每次需要新feature时,从master拉取开发分支,比如develop-1。

2. master有更新及时合并到develop-1,develop,以及release。

3. develop-1开发完成后合并到develop,部署测试环境。

4. develop环境测试通过后,合并develop-1代码到release环境,做预发布测试。

5. release环境测试通过后,将develop-1代码合并到master,上线。

第二步,设置分支merge权限

这一步的是实现code review的关键,也就是控制分支的merge 权限。之后只有有merge权限的责任人才能submit merge请求,没有merge权限的只能提交merge请求,等待有权限的review后submit,则合并成功

具体设置位置:

项目首页→Settings->Repository→Protected Branches

权限设置页面

将master,develop,release三个分支设置成只允许maintainers merge,不允许任何人push,也即在杜绝了上文说的从本地merge,push到远端的情况

权限设置结果

二、具体操作

这里描述从代码修改,提交,发起merge请求,到code review后merge submit的整体流程。

第一步 开发分支代码修改,提交,push到远端

feature的开发分支不做具体的保护设置,即开发人员可以修改后,add,commit,push origin,这里不做详细讲解,push之后,可以在分支页面看到相应commit日志。如下。


commit日志

第二步 create merge request

注意上图右上角有一个按钮,create merge request,发起merge请求后,进到页面

选择源分支和目标分支

选择source branch 和Target branch,这里我选择的是develop-1到release(假设到了预上线阶段),点击compare branches and continue。

发布merge request

页面中选择Assignee,指定reviewer,指定人会受到邮件。下面的approvers以及Approvals required,是批准人和最少批准个数。

填写Approvals required后,必须经过指定个数以上的人批准才能合并。

点击submit merge request。进到merge request页面。

第三步 code review

收到邮件的reviewer通过merge request 页面可以看到代码修改记录,并增加commond,其他人也可以通过commond进行讨论,

无问题可以点击merge通过或者不通过则点击右下角的close merge request。


review

第四步 查看所有merge请求

在项目页面的merge request页面可以看到所有open状态,close状态和merged状态的merge 请求

三、可能遇到的问题

遇到冲突怎么办

多个分支向一个分支合并代码等流程中,往往会形成版本冲突。此时,提交merge request后的页面如下:


冲突页面.png

我们发现,merge按钮置灰,同时出现了resolve conflicts以及merge locally的按钮。点击resolve conflicts。出现解决冲突的页面


解决冲突.png

页面可以通过use ours指定使用当前分支(发起merge request的源分支)代码或者use theirs来指定使用目标分支代码。或者点击 edit inline直接通过编辑页面编辑(更通用)。


edit inline.png

ok,我们已经处理完冲突,点击下方submit按钮。
返回merge request页面,等待远端冲突解决完成后,merge按钮正常。


冲突解决完成.png

四 总结。

1. 关于分支设置

以上仅是一个分支设置的示例,我们可以根据团队风格,和具体问题具体分析。

比如多人同时开发一个需求,可能需要拉取一个feature分支后再根据该feature分支拉取个人开发分支,开发完成后和并feature再合并develop,release,master等

2. code review 流程

总结下code review流程

(1)创建好 测试分支,release分支,并配置测试分支,release分支,master分支的merge权限

(2)开发分支开发完成后push到远端,通过页面提交merge request,指定reviewer和审批人,一般指定reviewer即可。

(3)reviewer 通过代码review,没有问题,可以点击merge,完成合并操作。如果有问题,可以发起讨论,或者直接关闭merge请求。

code review 流程完成。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342