GitLab的Code Review教程
一、前言
1、本文主要內容
- GitLab Code Review機制說明
- Git Workflow 與 Git Code Review Workflow
- GitLab Code Review 配置說明
- GitLab Code Review 流程演示
- GitLab For IDE 外掛介紹(JetBrains等等)
2、GitLab Code Review機制
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完成後將程式碼合併到目標分支。
3、本教程適用環境資訊
工具/環境 | 版本 |
---|---|
GitLab | GitLab.com、GitLab 社群版皆可 |
IDE | JetBrains(IntelliJ IDEA、PyCharm、PhpStorm、WebStorm、RubyMide、AppCode、CLion、GoLand、DataGrip、Rider、Android Studio等等) |
雖然Code Review不一定非要結合IDE來做,但是也不得不感謝
JetBrains Tools目前覆蓋的主流語言有:C/C++、C#、DSL、F#、Go、Groovy、Java、JavaScript、TypeScript、Kotlin、Objective-C、PHP、Python、Ruby、Scala、SQL、Swift、VB.NET(排名不分先後)
二、GitLab Code Review 配置
1、Code Review 工作流
- 通用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分的環節。
2、GitLab Repository 配置
GitLab倉庫相關配置以gitlab.com為例,本篇內容如果沒有特別註明,也同樣適用於私有化部署的GitLab CE版本
- GitLab新建倉庫&建立分支
新建分支:
release(from master)
develop-test(from master)、
feature-ken-test(from develop-test)
- Protected Branches 配置
為了保證必須以Merge的方式變更develop分支、release分支、以及master分支,我們需要對Push以及Merge許可權進行限制
這裡,我們限制分支,所有的開發人員對develop分支、release分支、以及master分支均無Push許可權,只能以Merge方式合併到對應分支,而且只有Maintainers(Masters)組的使用者有Merge許可權。
三、GitLab Code Review 示例
- 變更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/