一、前言
- GitLab Code Review机制说明
- Git Workflow 与 Git Code Review Workflow
- GitLab Code Review 配置说明
- GitLab Code Review 流程演示
- GitLab For IDE 插件介绍(JetBrains等等)
GitLab可以在分支合并的时候支持两种方式:
- 在本地将源分支(Source branch)代码合并到目标分支(Target branch)然后Push到目标分支(Target branch)
- 将源分支(Source branch)Push到远端,然后在GitLab指定目标分支(Target branch)发起Merge Request,对目标分支(Target branch)拥有Push权限的用户执行Merge操作,完成合并。
也就是说,使用GitLab进行Code Review就是在分支合并环节发起Merge Request,然后Code Review完成后将代码合并到目标分支。
工具/环境 | 版本 |
---|---|
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(排名不分先后)
- 通用Git工作流说明
- 需求确认后,从master创建develop分支
- 开发人员从develop分支创建自己的feature分支进行开发
- master分支发生变更,需要从master分支合并到develop分支、可以考虑定期合并一次
- feature分支合并到对应的develop分支之前,需要从develop分支合并到feature分支
- feature分支合并到对应的develop分支之后,发布到测试环境进行测试
- develop分支在测试环境测试通过之后,合并到release分支并发布到预发布环境进行测试
- release分支在预发布环境验证通过后,合并到master分支并发布到生产环境进行验证
分支名称约定:
分支类型 | 名称格式 | 说明 |
---|---|---|
Master | master | 有且只有一个 |
Release | release-*
|
* 可以是班车发布日期也可以是需求名称缩写,也可以根据需要只用一个release分支 |
Develop | release-*
|
* 通常是班车发布日期或者需求名称缩写 |
Feature | feature-{username}-*
|
- Code Review 环节选定
以上述Git工作流为例,开发人员在Feature分支进行开发,开发完成后Merge到Develop分支进行测试。
那么最适合做Code Review就是Feature分支合并到Develop分的环节。
GitLab仓库相关配置以gitlab.com为例,本篇内容如果没有特别注明,也同样适用于私有化部署的GitLab CE版本
- GitLab新建仓库&创建分支
仓库地址:https://gitlab.com/ken-io/test
新建分支:
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
这里,我们限制分支,所有的开发人员对develop分支、release分支、以及master分支均无Push权限,只能以Merge方式合并到对应分支,而且只有Maintainers(Masters)组的用户有Merge权限。
- 变更Feature分支
在线修改feature-ken-test
分支README.md
文件,为Merge Request提供基础
http://www.cgpwyj.cn/
http://www.peacemind.com.cn/
http://www.tasknet.com.cn/
http://www.metroworld.com.cn/
http://www.cngodo.cn/
http://www.gzrdbp.cn/
http://www.dnapt.cn/
http://www.zgxxyp.cn/
http://www.sjjdvr.cn/
http://www.sujinkeji.cn/
http://www.zsjxbd.cn/
http://www.yesgas.cn/
http://www.quickpass.sh.cn/
http://www.jspcrm.cn/
http://www.yjdwpt.cn/
http://www.henanwulian.cn/
http://www.hhrshh.cn/
http://www.gpgold.cn/
http://www.jingzhuiyou.cn/
http://www.ownbar.cn/
http://www.shtarchao.net.cn/