GitLab的权限管理及Merge Request

原创尘世间一名迷途小码农 发布于2019-06-09 12:40:30 阅读数 2909  收藏

目录

1、前言

2、角色权限

3、强制代码审查

一、设置受保护分支

二、创建及批核Merge Request

三、历史查询


1、前言

团队目前在日常开发工作中都是在线下进行代码审查,但是这样的模式根本无法做到过程留痕。因此,需要使用GitLab的Merge Request或者Gerrit这样的工具进行过程管理。这里详述一下如何通过Merge Request进行线上的代码审查。

2、角色权限

首先,在GitLab中的角色分为以下5种:Guest、Reporter、Developer、Maintainer、Owner。具体权限可以参考官方文档

https://docs.gitlab.com/ee/user/permissions.html

具体的权限可以参考以下:

Action Guest Reporter Developer Maintainer Owner
Create new issue ✓ 1
Create confidential issue ✓ 1
View confidential issues (✓) 2
Leave comments ✓ 1
See related issues
See a list of jobs ✓ 3
See a job log ✓ 3
Download and browse job artifacts ✓ 3
View wiki pages ✓ 1
Create and edit wiki pages    
Delete wiki pages      
View license management reports  ✓ 1
View Security reports  ✓ 1
View project code 1
Pull project code 1
Download project 1
Assign issues  
Assign merge requests    
Label issues  
Label merge requests    
Create code snippets  
Manage issue tracker  
Manage labels  
See a commit status  
See a container registry  
See environments  
See a list of merge requests  
Manage related issues   
Lock issue discussions  
Create issue from vulnerability   
View Error Tracking list  
Pull from Maven repository or NPM registry   
Publish to Maven repository or NPM registry     
Lock merge request discussions    
Create new environments    
Stop environments    
Manage/Accept merge requests    
Create new merge request    
Create new branches    
Push to non-protected branches    
Force push to non-protected branches    
Remove non-protected branches    
Add tags    
Cancel and retry jobs    
Create or update commit status    
Update a container registry    
Remove a container registry image    
Create/edit/delete project milestones    
View approved/blacklisted licenses 
Use security dashboard     
Dismiss vulnerability     
Apply code change suggestions    
Use environment terminals      
Run Web IDE’s Interactive Web Terminals       
Add new team members      
Push to protected branches      
Enable/disable branch protection      
Turn on/off protected branch push for devs      
Enable/disable tag protections      
Rewrite/remove Git tags      
Edit project      
Add deploy keys to project      
Configure project hooks      
Manage Runners      
Manage job triggers      
Manage variables      
Manage GitLab Pages      
Manage GitLab Pages domains and certificates      
Remove GitLab Pages      
View GitLab Pages protected by access control
Manage clusters      
Manage license policy       
Edit comments (posted by any user)      
Manage Error Tracking      
Switch visibility level        
Transfer project to another namespace        
Remove project        
Delete issues        
Force push to protected branches 4          
Remove protected branches 4          
View project Audit Events      
View project statistics  
View Insights charts 

从上图可以看出来,Maintainer能够push代码到受保护分支,而Developer只能创建Merge Request,这就为团队推行强制代码审查并做到有迹可循提供了技术保证。

3、强制代码审查

一、设置受保护分支

通过菜单 Project -> Settings -> Repository -> Protected Branches,然后按照下图步骤设置,最终可以得到第十步的结果:

二、创建及批核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】。

三、历史查询

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

 

GitLab的权限管理及Merge Request的更多相关文章

  1. git学习------> 解决Gitlab 版本升级之后,发送 merge request 出现 http 500 的返回码错误

    今天有同事在Gitlab上发送 Merge Request的时候,直接出现如下所示的界面,提示http 500,服务器内部出错. 一.错误描述 1.1 创建新的 Merge Request 1.2 填 ...

  2. Centos7安装gitlab11 学习笔记之基础概念、部署安装、权限管理、issue管理

    一.基础介绍 1.简介 一个基于GIT的源码托管解决方案 基于rubyonrails开发 集成了nginx postgreSQL redis sidekiq等组件 2.安装要求 2g内存以上,有点占内 ...

  3. git使用-merge request开发操作步骤

    0. 如果当前不在develop分支,则切换到develop分支 git checkout develop 1. 获取develop分支最新代码 git pull 注意:这一步正常来说应该是一个Fas ...

  4. Gitlab+Jenkins学习之路(三)之gitlab权限管理--issue管理

    1.创建Group,User,Project 创建一个组,组名为java Group path http://192.168.56.11/java Visibility Level: #为权限级别,一 ...

  5. 自动化部署之gitlab权限管理--issue管理

    一.删除测试项目 先进入项目,选择编辑项目 二.拉取到最下方,移除项目 三 输入你要删除的项目名称 二 创建Group,User,Project 2.1 创建一个组,组名为java Group pat ...

  6. 【转】GitHub 的 Pull Request 和 GitLab 的 Merge Request 有区别吗?

    在 GitHub 上混久了,经常听到 Pull Request,在 GitLab 上混久了,则经常 提起 Merge Request ,然而它们之间有不同吗?为什么要用两个不同的名称? 要追溯这两个名 ...

  7. GitLab:解决Merge Request中Commits不更新的问题

    最近在使用 GitLab 的 Merge Requests 功能进行 Code Review .操作流程是这样的: 1)开发人员A要给一个项目增加一个新功能,先在这个项目上创建一个 Git 分支. 2 ...

  8. gitlab 一键 merge request(III)

    已经有两位同学写过类似的 wiki 了,值得一看: gitlab一键提交request merge & assign 为啥我又来凑热闹呢?基于下面两个原由: 我的机子是 Win10,上面脚本的 ...

  9. 使用 gitlab 进行代码管理

    这里使用 gitlab 做服务器, 客户端主要使用 git extensions. ============================= gitlab 项目成员类型: ============= ...

随机推荐

  1. 升级.net core 3.x 后mvc项目调试状态编辑view代码不能实时预览

    https://stackoverflow.com/a/58126955 简单来说 需要在nuget上安装Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilati ...

  2. Golang: 读取文件并统计内容

    上次我们从命令行接收用户输入,并统计了每次输入内容出现的次数,今天对程序加以改造,使其能够读取文件内容,并统计每行文本出现的次数. 首先,我们把接收输入的逻辑封装成一个函数: // scan.go p ...

  3. Vim 简易配置

    Macbook终端vim使用系统剪切板 系统自带的, 可执行程序是 /usr/bin/vim, 安装目录是 /usr/share/vim/, 版本7.3. 我使用 homebrew 后顺手安装了一次 ...

  4. linux lvm管理基础教程

    linux lvm管理基础教程 本人是在redhat7.x系统上亲测lvm管理功能,至于文中所受的CentOS 6 没有亲自试过. 本文来自:https://geekpeek.net/lvm-phys ...

  5. 22、pandas表格、文件和数据库模块

    pandas官方文档:https://pandas.pydata.org/pandas-docs/stable/?v=20190307135750 pandas基于Numpy,可以看成是处理文本或者表 ...

  6. SpringBoot——SpringBoot学习记录【一】

    前言 公司目前主要的业务,用的语言是java,所以学习下相关的技术呀,还好大学基础语言学的JAVA SpringBoot简介 官网 SpringBoot 简介 SpringBoot是用来简化Sprin ...

  7. 通过jar包名称,获取maven的依赖信息GAV

    烦恼:当我们手上有一堆三方件jar包,想要转成maven管理时,需要一个一个配置进pom文件中,而且GAV信息还得去收集. 为了快速生成如下信息,我们可以这样.... GAV:groupId + ar ...

  8. js的类型系统--js基于原型的基石是所有对象最终都能够类型自证

    一.动态类型 变量能够类型自证的类型即为动态类型 二.基础与内置类型 三.对象与类型的关系 1.对象本身能够自证为基本类型: 2.元原型可能为一个空的集合: 3.复合对象的成员能够自证为基本类型: 4 ...

  9. 牛客挑战赛32 E. 树上逆序对

    对于一对 $(x, y)$,能成为逆序对的取决于绝对值大的那个数的符号.假如 $a[x] > a[y]$,当 $a[x]$ 为正时,不管 $a[y]$ 取不取负号都比 $a[x]$ 小.当 $a ...

  10. MongoDB repairDatabase 释放磁盘空间

    repairDatabase是官方文档中认为唯一可以回收硬盘空间的方法. repairDatabase is the appropriate and the only way to reclaim d ...