Gitlab中merge request操作说明

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操作。

分支设置

创建项目分支

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

例中假设流程开发如下:

  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权限。如下图:

设置仓库用户权限

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

合并请求

创建

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

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

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

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

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

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

合并

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

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

  1. 关于change和commit
    1. 在commits中可以看到此次merge request的commit情况
    2. 在chanage中可以看到此次merge request中所有的文件变动情况
  2. 关于approve
    1. 被指定reviewer的用户在reviewer通过以后可以点击approve审核通过
  3. 关于merge
    1. 具有merge权限的用户可以操作merge进行代码合并

参考:

www.jianshu.com/p/5d764b52e...

zhuanlan.zhihu.com/p/257857632

blog.csdn.net/qq_42183414...

www.cnblogs.com/lazio10000/...

segmentfault.com/a/119000001...

相关推荐
kevinzeng3 分钟前
SpringBoot自动装配注解
spring boot·后端
闲人编程3 分钟前
GraphQL与REST API对比与实践
后端·python·api·graphql·rest·codecapsule
JavaEdge在掘金7 分钟前
零距离拆解银行司库系统(TMS)的微服务设计与实践
后端
11来了10 分钟前
DeepResearch 核心原理
后端
Wzx19801229 分钟前
go接受输入方式
开发语言·后端·golang
シ風箏1 小时前
Shell【脚本 06】监测文件数据量并压缩及查看远程服务器状态并删除文件脚本分享
linux·运维·服务器·github·shell
汤姆yu1 小时前
基于SpringBoot的人工智能学习网站
spring boot·后端·学习·人工智能学习
h***34631 小时前
怎么下载安装yarn
android·前端·后端
IT_陈寒1 小时前
Vue 3.4 性能优化揭秘:这5个Composition API技巧让我的应用提速40%
前端·人工智能·后端