一、前言
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開發了幾乎覆寫所有主流編程語言的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 | develop-* |
*通常是班車發布日期或者需求名稱縮寫 |
| Feature | feature-{username}-* |
- Code Review 環節選定
以上述Git作業流為例,開發人員在Feature分支進行開發,開發完成后Merge到Develop分支進行測驗,
那么最適合做Code Review就是Feature分支合并到Develop分的環節,

2、GitLab Repository 配置
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權限,
三、GitLab Code Review 示例
- 變更Feature分支
在線修改feature-ken-test分支README.md檔案,為Merge Request提供基礎

這里隨意更新一行內容,然后Commit changes即可,
- 創建Merge Request
選單:Merge Requests,然后點擊:New Merge Request

Source branch選擇:feature-ken-test
Target branch選擇:develop-test
然后:Compare branches and continue

操作項/填寫項說明:
| 操作項/填寫項 | 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 操作

Merge Request 創建之后就會轉到該頁面,被分配到的人(Assignee)會收到郵件提醒,如果需要多個人進行 Code Review,只要將該頁面的鏈接發給其他專案成員即可,專案成員可以查看變更并評論,只不過按照之前的配置,只有Maintainers(Masters)角色的成員才有Merge的權限,

在Changes選項卡中,我們可以看到所有的變更,將游標移動到行號處會出現評論按鈕,我們可以點擊評論按鈕發起評論,這個評論是對專案成員可見的,大家可在討論區進行討論,最終討論發起者有權將討論標記為已解決resolved

當所有的問題已解決之后(如果選擇了審批人也需要審批通過),Maintainers(Masters)成員點擊Merge完成合并即可,

Merge完成之后,可以選擇Remove Source Branch等操作,
develop分支合并到release分支,以及elease分支合并到master是不需要經過Code Review的,直接Merge即可,這里就省略了,
四、IDE Merge Request 插件使用介紹
前面介紹了通過GitLab網頁創建Merge Request并發起Code Review,但作為開發人員,還是結合IDE來使用會更順手,GitLab提供了相關的api,只要我們創建回應的token,就可以供IDE插件來訪問GitLab,以便使用IDE代替在網頁上操作,
1、GitLab Access Token
選單:User Settings->
Access Tokens 進入Access Token添加頁面

| 項 | 說明 |
|---|---|
| Name | 名稱,根據自己喜好來即可 |
| Expires at | 過期時間,最遠可以選擇到10年后,根據自己需要填寫即可 |
| Scopes | 范圍,這里選擇api就夠用了 |
創建完成后,麻煩暫時保存token,因為一旦重繪或者重開頁面,token就不可見了,
2、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管理頁

點擊Browse repositories并搜索gitlab

安裝Gitlab Projects以及Gitlab Integration,然后重啟IDE生效
- 配置GitLab
在Settings界面搜索GitLab Settings

填寫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

這里相當于我們在GitLab網頁上進行創建操作,只不過少了一些選項,也暫不支持Approvers相關選項,
選擇目標分支,被分配的人,填寫好Title、Description然后點擊OK即可,
Merge Request創建完成后,插件會在右下角提示,點擊鏈接即可跳轉到Merge Request頁面
如果提示沖突,請先將目標分支代碼合并到當前分支
- Merge Request Manage
專案成員在選單中選擇:VCS->Git->Git Lab-> List Merge Request

在這里可以看到待處理的Merge Request,選中后點擊Code Review就可以呼出Merge Request操作面板

| 按鈕 | 說明 |
|---|---|
| Diff | 查看所有變更檔案及差異 |
| Comments | 查看、添加評論 |
| Assign to me | 將跟進人指給自己 |
| Merge | 執行Merge |
- Merge Request Diff
Diff界面說明:

左側是本次合并的commit記錄,右側是本次合并的檔案,雙擊對應檔案即可查看差異明細

- Merge Request Comments

Comments界面可以查看指定Merge Reuqest評論資訊,也可以添加評論,雙擊可以查看完整評論內容,
但是不支持針對代碼行發起討論、對討論標記為已解決等,
GitLab插件還是更適用于Create Merge Request、或者對于較為簡單的提交進行Code Review,如果需要討論等功能,還是建議在GitLab頁面上進行操作
3、其他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
GitLab安裝部署教程:https://ken.io/note/centos7-gitlab-install-tutorial
以上,如有疑問,歡迎聯系我:https://ken.io/home/about
- 本文首次發布:2018-08-20
- 本文原文鏈接:https://ken.io/note/gitlab-code-review-tutorial
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/223638.html
標籤:其他
上一篇:建筑智能化綜合監控系統資料點解剖
