Gitlab中merge request操作说明

Code review的目的是提高代码质量,减少开发bug,俗话说,三人行必有我师,众人拾柴火焰高。gitlab提供了code review机制,对基于gitlab的code review,直接以具体例子的形式做个实践总结。

7f405d93702df0a7f5114af244138825.png

Gitlab提供了两种代码merge机制:

在本地将源分支(Source branch)代码合并到目标分支(Target branch),然后Push到目标分支(Target branch)。

将源分支(Source branch)Push到远端,然后在GitLab指定目标分支(Target branch)发起Merge Request,对目标分支(Target branch)拥有merge权限的用户执行Merge操作,完成合并。

这两种方式仅有第2种适合code review,所以我们要做的事情是设置权限,拒绝本地merge后push到远端的操作。在第2种方式中 发起merge request后,由有merge权限用户做code review,通过后执行merge操作。

分支设置

创建项目分支

经典的 git flow 图中,有 Master、Hotfix、Release、Develop、Feature 等分支。每个分支的作用各不相同。各个分支的主要功能如下:

7e49179763c3d1996a8a8ede26f59191.png

1fa530b67f0a2d866dff0dc872349c88.png

例中假设流程开发如下:

1. 每次需要新feature需要开发时,则从develop上拉取feature分支,因此develop分支是feature的父分支

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

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

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

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

设置分支保护

为了保证必须以Merge的方式变更develop分支、release分支、以及master分支,我们需要对Push以及Merge权限进行限制。我们限制分支,所有的开发人员对develop分支、release分支、以及master分支均无Push权限,只能以Merge方式合并到对应分支,而且只有Maintainers(Masters)组的用户有Merge权限。如下图:

e438b7b168c22773cccd444ca987dd41.png

7d53ed010059c56c3a5f35eaf8fa433e.png

设置仓库用户权限

图下图,zhangsan作为项目的owner,lisi作为项目的developer。按照上面的分支保护规则,lisi是不能够从develop分支merge到其它分支的,zhangsan是可以执行merge的。

5144f5e3c616b92ad730dc7ca1d90302.png

合并请求

创建

lisi打算将develop分支代码合并到test分支。lisi在本地将代码commit、push到develop分支,然后登录gitlab在对应的项目下提交merge requests。如下图:

60c85c30c1cca94a89087ba15ce14b11.png

如下图,准备创建merge requests。source branch选择develop,表示需要merge的分支;target branch选择test,表示需要合并的目标分支。核心逻辑表示创建一个从develop分支merge到test分支的请求。

2ebd818a028572cbabf8d263ad777e97.png

如下图,填写一些merge request的表单参数。titile表示本次merge request的简短标题;description表示本次merge request的详细说明,在这里介绍一下本次merge request做了哪些改动;assignee选择自己(还没研究出具体干啥用的);reviewer表示需要通知谁来做代码检查工作;milestone表示里程碑选项,如果有特殊要求的话可以选一个,通常都是选择no milestone;labels表示项目标签,如果有特殊要求的话可以选一个,通常都是选择no label。最后点击create merge request。

7d8a685c7b36be662dc8ada05c155087.png

当lisi将merge request创建完成以后可以在list中看到列表,如下图:

cd59cc58b5f211bc3f0441c224073cf6.png

lisi查看merge request详情,如果有问题或者需要重新修改的可以点击最后的close merge request,如下图:

f2c4b10045824f7814930000eb84d7cf.png

到此,lisi就完成了merge request的创建,接下来就等待具有merge权限的zhangsan来执行merge操作。

合并

合并需要使用zhangsan进行操作,登录进来以后在列表中以及右上角都会给出merge request的提示。如下图所示:

4c79ce15396213826a2212a353da2e23.png

点击进入merge request详情有两块,如下图:

关于change和commit

在commits中可以看到此次merge request的commit情况

在chanage中可以看到此次merge request中所有的文件变动情况

关于approve

被指定reviewer的用户在reviewer通过以后可以点击approve审核通过

关于merge

具有merge权限的用户可以操作merge进行代码合并

4122268b94d5953147e1d89adbc66f4b.png

  • 13
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值