基於GitLab的Code Review教程

來源:互聯網
上載者:User
一、前言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可以在分支合并的時候支援兩種方式:

  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完成後將代碼合并到目標分支。

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工作流程說明

  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分支進行測試。

那麼最適合做Code Review就是Feature分支合并到Develop分的環節。

2、GitLab Repository 配置

GitLab倉庫相關配置以gitlab.com為例,本篇內容如果沒有特別註明,也同樣適用於私人化部署的GitLab CE版本

  • GitLab建立倉庫&建立分支

倉庫地址: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選項
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:plugins.jetbrains.com/plugin/7975-gitlab-projects
Gitlab Integration: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外掛程式:marketplace.visualstudio.com/items?itemName=MysticBoy.GitLabExtensionforVisualStudio

  • Visual Studio Code

Visual Studio Code GitLab外掛程式:marketplace.visualstudio.com/items?itemName=jasonn-porch.gitlab-mr

  • Atom

Atom GitLab 外掛程式:atom.io/packages/gitlab

 

GitLab安裝部署教程:ken.io/note/centos7-gitlab-install-tutorial

 

 

以上,如有疑問,歡迎聯絡我:ken.io/home/about

  • 本文首次發布:2018-08-20
  • 本文原文連結:ken.io/note/gitlab-code-review-tutorial

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.