GitLab能夠在分支合併的時候支持兩種方式:html
也就是說,使用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
image併發
分支名稱約定:編程語言
分支類型 | 名稱格式 | 說明 |
---|---|---|
Master | master | 有且只有一個 |
Release | release-* |
* 能夠是班車發佈日期也能夠是需求名稱縮寫,也能夠根據須要只用一個release分支 |
Develop | develop-* |
* 一般是班車發佈日期或者需求名稱縮寫 |
Feature | feature-{username}-* |
開發人員我的分支 |
以上述Git工做流爲例,開發人員在Feature分支進行開發,開發完成後Merge到Develop分支進行測試。ide
那麼最適合作Code Review就是Feature分支合併到Develop分的環節。工具
imagegitlab
GitLab倉庫相關配置以gitlab.com爲例,本篇內容若是沒有特別註明,也一樣適用於私有化部署的GitLab CE版本測試
image
倉庫地址:https://gitlab.com/ken-io/test
image
新建分支:
release(from master)
develop-test(from master)、
feature-ken-test(from develop-test)
爲了保證必須以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權限。
在線修改feature-ken-test
分支README.md
文件,爲Merge Request提供基礎
image
這裏隨意更新一行內容,而後Commit changes
便可。
菜單: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便可。
[站外圖片上傳中...(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便可。這裏就省略了。
前面介紹了經過GitLab網頁建立Merge Request併發起Code Review,但做爲開發人員,仍是結合IDE來使用會更順手,GitLab提供了相關的api,只要咱們建立響應的token,就能夠供IDE插件來訪問GitLab,以便使用IDE代替在網頁上操做。
菜單:User Settings->
Access Tokens 進入Access Token添加頁面
image
項 | 說明 |
---|---|
Name | 名稱,根據本身喜愛來便可 |
Expires at | 過時時間,最遠能夠選擇到10年後,根據本身須要填寫便可 |
Scopes | 範圍,這裏選擇api就夠用了 |
建立完成後,麻煩暫時保存token。由於一旦刷新或者重開頁面,token就不可見了。
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
Settings->Plugins 進入Plugins管理頁
image
點擊Browse repositories
並搜索gitlab
image
安裝Gitlab Projects以及Gitlab Integration,而後重啓IDE生效
在Settings界面搜索GitLab Settings
image
填寫GitLab Server Url、Access Token,而後點擊Add New One
完成添加
若是是私有化部署的GitLab,換成對面的域名或者IP+Port便可
Clone項目feature-ken-test分支到本地,變動後push到origin。
而後在菜單中選擇:VCS->Git->Git Lab-> Create Merge Request
image
這裏至關於咱們在GitLab網頁上進行建立操做,只不過少了一些選項,也暫不支持Approvers相關選項。
選擇目標分支,被分配的人,填寫好Title、Description而後點擊OK便可。
Merge Request建立完成後,插件會在右下角提示,點擊連接便可跳轉到Merge Request頁面
若是提示衝突,請先將目標分支代碼合併到當前分支
項目成員在菜單中選擇:VCS->Git->Git Lab-> List Merge Request
image
在這裏能夠看到待處理的Merge Request,選中後點擊Code Review
就能夠呼出Merge Request操做面板
image
按鈕 | 說明 |
---|---|
Diff | 查看全部變動文件及差別 |
Comments | 查看、添加評論 |
Assign to me | 將跟進人指給本身 |
Merge | 執行Merge |
Diff界面說明:
image
左側是本次合併的commit記錄,右側是本次合併的文件。雙擊對應文件便可查看差別明細
image
image
Comments界面能夠查看指定Merge Reuqest評論信息,也能夠添加評論,雙擊能夠查看完整評論內容。
可是不支持針對代碼行發起討論、對討論標記爲已解決等。
GitLab插件仍是更適用於Create Merge Request、或者對於較爲簡單的提交進行Code Review。若是須要討論等功能,仍是建議在GitLab頁面上進行操做
Visual Studio GitLab插件:https://marketplace.visualstudio.com/items?itemName=MysticBoy.GitLabExtensionforVisualStudio
Visual Studio Code GitLab插件:https://marketplace.visualstudio.com/items?itemName=jasonn-porch.gitlab-mr
Atom GitLab 插件:https://atom.io/packages/gitlab
做者:ken_io 連接:https://www.jianshu.com/p/5dc041aeccd2 來源:簡書 簡書著做權歸做者全部,任何形式的轉載都請聯繫做者得到受權並註明出處。