Gerrit使用篇-提交代碼,合併代碼

前言

在使用gerrit之前,必須對git有一定的熟悉,
Gerrit安裝篇介紹了怎麼安裝Gerrit,這篇會簡單介紹下Gerrit如何使用,下面這張圖是Gerrit的生命週期
這裏寫圖片描述

下面做個比較:
下圖是一個普通的git
這裏寫圖片描述

下圖是gerrit
這裏寫圖片描述

仔細比較:gerrit多了一個”PendingChange”,這部分是做Code Review的,然後管理員verify之後,PendingChange代碼就會合併到Git倉庫了。

1.完整配置

點擊Settings,選擇Contact Informations,點擊右邊的Register New Email,如下圖我註冊了一個通知郵件
這裏寫圖片描述
這樣有狀態變化或者需要審覈代碼,就會接收到通知。

點擊左邊的”SSH Public Keys”,添加需要key,如何獲取這個key,可以通過以下方式:

1) 如果不存在~/.ssh/id_rsa.pub文件,則通過下面命令生成
這裏寫圖片描述

2)通過下面命令獲取key
cat ~/.ssh/id_rsa.pub
這裏寫圖片描述

然後把這個key複製,像下面一樣:
這裏寫圖片描述

點擊“add”按鈕,添加成功

2.創建project

需要登錄管理員賬號(第一個登錄的賬號就是管理員賬號,當然你也可以使用管理員賬號設置其他賬號爲管理員),點擊Projects,選擇最後一個菜單 “Create New Project”,如下圖

這裏寫圖片描述

一般情況創建的新工程都會繼承與”All-Projects”,如下圖:
這裏寫圖片描述

點擊”Create Project”按鈕,創建成功之後,就可以在Projects的List列表看到了,如下圖:

這裏寫圖片描述

3.提交代碼

點擊我們上面創建的HelloGerrit工程,你會看到下面這樣的界面:
這裏寫圖片描述

選中”clone with commit-msg hook”和”ssh”,會得到下面這樣一個路徑:
這裏寫圖片描述

拷貝上面的路徑到git-bash裏執行
這裏寫圖片描述

我們試下按照正常的使用git的方式commit和push代碼,如下:
這裏寫圖片描述
上面錯誤告訴我們:這個賬號沒有權限把代碼直接提交到git倉庫,這就是gerrit的精髓了,關於gerrit是怎麼工作的,可以看下前言部分。

接下來,我們就需要配置賬號可以提交到”PendingChange”了,

git config remote.origin.push refs/heads/*:refs/for/*

然後我們看下git push之後就怎麼樣
這裏寫圖片描述

在瀏覽器打開上面的那個網址“http://192.168.1.3:9080/129”,內容很豐富
這裏寫圖片描述
這裏寫圖片描述

4.審覈代碼

添加Reviewer
這裏寫圖片描述

添加的Reviewer綁定的郵箱會收一個通知郵件:
這裏寫圖片描述

OK,接下來,審覈者打開網頁,閱讀代碼,比如其中的一個類文件
這裏寫圖片描述
接下來審覈者有兩種選擇

1)如果發現代碼有問題或者不符合規範,他可以點擊”Abandon Change”
這裏寫圖片描述

這樣,提交代碼的人會收到一個郵件通知
這裏寫圖片描述

因爲在提交者的git log,這個被拒絕的提交仍然存在,所以需要去除這個提交的log,通過重置到上一個提交就可以了

git reset c7ad7f432ead7289685df6a4fd53cf0c2dd63c91

然後重新提交就可以了。

2)審覈通過
審覈者,點擊“Review”,出現下面選擇
這裏寫圖片描述

需要注意:每個提交只有滿足了”+2”和”verified”才能submit合併到master分支。

我們注意到了這裏沒有 顯示“verified”,所以我們需要去開啓這個功能,
因爲“HelloGerrit”的權限集成自“AllProjects”,所以對“AllProject”的Access進行修改
這裏寫圖片描述
因爲我們正在修改的是refs/heads/*,所以滑動到這個位置,添加相應權限,比如我已經添加好的
這裏寫圖片描述

接下來看下,回到之前的地方,點擊“review”按鈕,如下圖
這裏寫圖片描述

需要注意幾點:
1)合併代碼需要Code-Review的”+2”和Verified的”+1”才能使用合併功能
2)CodeReview的所有選項和Verified的所有選項可以根據團隊配置來分配,也可以都由一個人來做。一般情況:CodeReview的+1/-1對應初級審覈,+2/-2對應更上一級審覈;Verified就是合併之前的確認的。

這裏,我自己選擇CodeReview的”+2”和Verfied的“+1”,然後點擊“Submit Patch set 1”成功了,可以看到代碼已經合併了
這裏寫圖片描述
接下來就可以團隊其他成員就可以用git pull拉取代碼

5.gerrit可以當做普通的git使用

其實Gerrit也可以像普通的git一樣使用,只不過我們需要先修改一些權限, 還是像上面一樣打開權限列表,見下圖:
這裏寫圖片描述
我們給“Administrators”分組添加了直接push的權限,這個分組下面的所有成員都可以像git一樣使用gerrit,如果之前使用下面的命令修改了git push

git config remote.origin.push refs/heads/*:refs/for/*

在把gerrit當成普通git使用之前,需要做如下修改

git config remote.origin.push master

如下圖是修改之後像普通的git一樣提交代碼:
這裏寫圖片描述

總結

不知道安裝gerrit,可以看下我之前寫的Gerrit安裝篇,以後有時間會根據實際項目使用,來繼續補充gerrit使用。你也可以鏈接到下面三個地方深入學習gerrit

1)using gerrit
2)gerrit-review
3)gerrit tutorial

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章