基于GitLab的Code Review教程或指南

1、前言

一、本文主要内容

  • GitLab Code Review机制说明
  • Git Workflow 与 Git Code Review Workflow
  • GitLab Code Review 配置说明
  • GitLab Code Review 流程演示
  • GitLab For IDE 插件介绍(JetBrains等等)

二、GitLab Code Review机制

GitLab能够在分支合并的时候支持两种方式:html

  1. 在本地将源分支(Source branch)代码合并到目标分支(Target branch)而后Push到目标分支(Target branch)
  2. 将源分支(Source branch)Push到远端,而后在GitLab指定目标分支(Target branch)发起Merge Request,对目标分支(Target branch)拥有Push权限的用户执行Merge操做,完成合并。

也就是说,使用GitLab进行Code Review就是在分支合并环节发起Merge Request,而后Code Review完成后将代码合并到目标分支。git

三、本教程适用环境信息

工具/环境 版本
GitLab GitLab.com、GitLab 社区版皆可
IDE JetBrains(IntelliJ IDEA、PyCharm、PhpStorm、WebStorm、RubyMide、AppCode、CLion、GoLand、DataGrip、Rider、Android Studio等等)

虽然Code Review不必定非要结合IDE来作,可是也不得不感谢JetBrains开发了几乎覆盖全部主流编程语言的IDE编程

JetBrains Tools目前覆盖的主流语言有:C/C++、C#、DSL、F#、Go、Groovy、Java、JavaScript、TypeScript、Kotlin、Objective-C、PHP、Python、Ruby、Scala、SQL、Swift、VB.NET(排名不分前后)api

2、GitLab Code Review 配置

一、Code Review 工做流

  • 通用Git工做流说明

image并发

  1. 需求确认后,从master建立develop分支
  2. 开发人员从develop分支建立本身的feature分支进行开发
  3. master分支发生变动,须要从master分支合并到develop分支、能够考虑按期合并一次
  4. feature分支合并到对应的develop分支以前,须要从develop分支合并到feature分支
  5. feature分支合并到对应的develop分支以后,发布到测试环境进行测试
  6. develop分支在测试环境测试经过以后,合并到release分支并发布到预发布环境进行测试
  7. release分支在预发布环境验证经过后,合并到master分支并发布到生产环境进行验证

分支名称约定:编程语言

分支类型 名称格式 说明
Master master 有且只有一个
Release release-* *能够是班车发布日期也能够是需求名称缩写,也能够根据须要只用一个release分支
Develop develop-* *一般是班车发布日期或者需求名称缩写
Feature feature-{username}-* 开发人员我的分支
  • Code Review 环节选定

以上述Git工做流为例,开发人员在Feature分支进行开发,开发完成后Merge到Develop分支进行测试。ide

那么最适合作Code Review就是Feature分支合并到Develop分的环节。工具

imagegitlab

二、GitLab Repository 配置

GitLab仓库相关配置以gitlab.com为例,本篇内容若是没有特别注明,也一样适用于私有化部署的GitLab CE版本测试

  • GitLab新建仓库&建立分支

image

仓库地址:https://gitlab.com/ken-io/test

image

新建分支:
release(from master)
develop-test(from master)、
feature-ken-test(from develop-test)

  • Protected Branches 配置

为了保证必须以Merge的方式变动develop分支、release分支、以及master分支,咱们须要对Push以及Merge权限进行限制

菜单:Settings->Repository Settings而后展开Protected Branches选项
https://gitlab.com/ken-io/test/settings/repository

gitlab-codereview-settings-protected-branches.png

这里,咱们限制分支,全部的开发人员对develop分支、release分支、以及master分支均无Push权限,只能以Merge方式合并到对应分支,并且只有Maintainers(Masters)组的用户有Merge权限。

对于通配符的分支保护,咱们须要给Maintainers(Masters)组的用户Push权限,否则没法新建对应格式的分支。对于固定名称的分支:master、release,能够限制全部角色都没有Push权限。

3、GitLab Code Review 示例

  • 变动Feature分支

在线修改feature-ken-test分支README.md文件,为Merge Request提供基础

image

这里随意更新一行内容,而后Commit changes便可。

  • 建立Merge Request

菜单:Merge Requests,而后点击:New Merge Request

image

Source branch选择:feature-ken-test
Target branch选择:develop-test
而后:Compare branches and continue

image

操做项/填写项说明:

操做项/填写项 ken.io 的说明
Title 标题,没有特殊要求保持默认便可
Description 描述,须要将变动的需求描述清楚,最好附件Code Review要点
Assignee 分配到的人,被分配到的人将会收到邮件通知,跟Merge权限没有必然关系,仍然是项目的Maintainers(Masters)角色拥有Merge权限
Milestone 里程碑,若是没有可不选
Label 标签,若是没有可不选
Approvers user 批准人/审批人,必须为项目所在组成员,若是选择了批准人,那这次合并必须经由批准人批准
Approvers group 批准人组,方便同时选择多个批准人
Approvals required 最少批准个数,若是选了个3个批准人,Approvals required设置为1,那么只须要1个批准人批准便可
Source branch 源分支,跟上一步骤选择一致,这里主要用于确认
Target branch 目标分支,跟上一步骤选择一致,这里主要用于确认

Approvers选项暂不适用于Gitlab的最新稳定版(11.1.4),指望后续能够支持。
这里填写好Description,选择Assignee,而后Submit merge request便可。

  • Merge Request 操做

[站外图片上传中...(image-3f6069-1536737759058)]

Merge Request 建立以后就会转到该页面,被分配到的人(Assignee)会收到邮件提醒,若是须要多我的进行 Code Review,只要将该页面的连接发给其余项目成员便可。项目成员能够查看变动并评论,只不过按照以前的配置,只有Maintainers(Masters)角色的成员才有Merge的权限。

image

在Changes选项卡中,咱们能够看到全部的变动。将光标移动到行号处会出现评论按钮,咱们能够点击评论按钮发起评论,这个评论是对项目成员可见的,你们可在讨论区进行讨论。最终讨论发起者有权将讨论标记为已解决resolved

image

当全部的问题已解决以后(若是选择了审批人也须要审批经过),Maintainers(Masters)成员点击Merge完成合并便可。

image

Merge完成以后,能够选择Remove Source Branch等操做。

develop分支合并到release分支,以及elease分支合并到master是不须要通过Code Review的,直接Merge便可。这里就省略了。

4、IDE Merge Request 插件使用介绍

前面介绍了经过GitLab网页建立Merge Request并发起Code Review,但做为开发人员,仍是结合IDE来使用会更顺手,GitLab提供了相关的api,只要咱们建立响应的token,就能够供IDE插件来访问GitLab,以便使用IDE代替在网页上操做。

一、GitLab Access Token

菜单:User Settings->
Access Tokens 进入Access Token添加页面

image

说明
Name 名称,根据本身喜爱来便可
Expires at 过时时间,最远能够选择到10年后,根据本身须要填写便可
Scopes 范围,这里选择api就够用了

建立完成后,麻烦暂时保存token。由于一旦刷新或者重开页面,token就不可见了。

二、JetBrains IDE GitLab插件使用

JetBrains提供了诸多IDE:IntelliJ IDEA、PyCharm、PhpStorm、WebStorm、RubyMide、AppCode、CLion、GoLand、DataGrip、Rider、Android Studio等等,如无心外,都适用GitLab插件。

安装如下两个插件便可:
Gitlab Projects:https://plugins.jetbrains.com/plugin/7975-gitlab-projects
Gitlab Integration:https://plugins.jetbrains.com/plugin/7319-gitlab-integration

  • 安装GitLab插件

Settings->Plugins 进入Plugins管理页

image

点击Browse repositories并搜索gitlab

image

安装Gitlab Projects以及Gitlab Integration,而后重启IDE生效

  • 配置GitLab

在Settings界面搜索GitLab Settings

image

填写GitLab Server Url、Access Token,而后点击Add New One完成添加
若是是私有化部署的GitLab,换成对面的域名或者IP+Port便可

  • Create Merge Request

Clone项目feature-ken-test分支到本地,变动后push到origin。
而后在菜单中选择:VCS->Git->Git Lab-> Create Merge Request

image

这里至关于咱们在GitLab网页上进行建立操做,只不过少了一些选项,也暂不支持Approvers相关选项。
选择目标分支,被分配的人,填写好Title、Description而后点击OK便可。
Merge Request建立完成后,插件会在右下角提示,点击连接便可跳转到Merge Request页面

若是提示冲突,请先将目标分支代码合并到当前分支

  • Merge Request Manage

项目成员在菜单中选择:VCS->Git->Git Lab-> List Merge Request

image

在这里能够看到待处理的Merge Request,选中后点击Code Review就能够呼出Merge Request操做面板

image

按钮 说明
Diff 查看全部变动文件及差别
Comments 查看、添加评论
Assign to me 将跟进人指给本身
Merge 执行Merge
  • Merge Request Diff

Diff界面说明:

image

左侧是本次合并的commit记录,右侧是本次合并的文件。双击对应文件便可查看差别明细

image

  • Merge Request Comments

image

Comments界面能够查看指定Merge Reuqest评论信息,也能够添加评论,双击能够查看完整评论内容。
可是不支持针对代码行发起讨论、对讨论标记为已解决等。


GitLab插件仍是更适用于Create Merge Request、或者对于较为简单的提交进行Code Review。若是须要讨论等功能,仍是建议在GitLab页面上进行操做

三、其余IDE GitLab插件使用

  • Visual Studio

Visual Studio GitLab插件:https://marketplace.visualstudio.com/items?itemName=MysticBoy.GitLabExtensionforVisualStudio

  • Visual Studio Code

Visual Studio Code GitLab插件:https://marketplace.visualstudio.com/items?itemName=jasonn-porch.gitlab-mr

  • Atom

Atom GitLab 插件:https://atom.io/packages/gitlab

做者:ken_io 连接:https://www.jianshu.com/p/5dc041aeccd2 来源:简书 简书著做权归做者全部,任何形式的转载都请联系做者得到受权并注明出处。

相关文章
相关标签/搜索