天天看點

Gerrit使用篇-送出代碼,合并代碼

前言

在使用gerrit之前,必須對git有一定的熟悉,

Gerrit安裝篇介紹了怎麼安裝Gerrit,這篇會簡單介紹下Gerrit如何使用,下面這張圖是Gerrit的生命周期

Gerrit使用篇-送出代碼,合并代碼

下面做個比較:

下圖是一個普通的git

Gerrit使用篇-送出代碼,合并代碼

下圖是gerrit

Gerrit使用篇-送出代碼,合并代碼

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

1.完整配置

點選Settings,選擇Contact Informations,點選右邊的Register New Email,如下圖我注冊了一個通知郵件

Gerrit使用篇-送出代碼,合并代碼

這樣有狀态變化或者需要稽核代碼,就會接收到通知。

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

1) 如果不存在~/.ssh/id_rsa.pub檔案,則通過下面指令生成

Gerrit使用篇-送出代碼,合并代碼

2)通過下面指令擷取key

cat ~/.ssh/id_rsa.pub

Gerrit使用篇-送出代碼,合并代碼

然後把這個key複制,像下面一樣:

Gerrit使用篇-送出代碼,合并代碼

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

2.建立project

需要登入管理者賬号(第一個登入的賬号就是管理者賬号,當然你也可以使用管理者賬号設定其他賬号為管理者),點選Projects,選擇最後一個菜單 “Create New Project”,如下圖

Gerrit使用篇-送出代碼,合并代碼

一般情況建立的新工程都會繼承與”All-Projects”,如下圖:

Gerrit使用篇-送出代碼,合并代碼

點選”Create Project”按鈕,建立成功之後,就可以在Projects的List清單看到了,如下圖:

Gerrit使用篇-送出代碼,合并代碼

3.送出代碼

點選我們上面建立的HelloGerrit工程,你會看到下面這樣的界面:

Gerrit使用篇-送出代碼,合并代碼

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

Gerrit使用篇-送出代碼,合并代碼

拷貝上面的路徑到git-bash裡執行

Gerrit使用篇-送出代碼,合并代碼

我們試下按照正常的使用git的方式commit和push代碼,如下:

Gerrit使用篇-送出代碼,合并代碼

上面錯誤告訴我們:這個賬号沒有權限把代碼直接送出到git倉庫,這就是gerrit的精髓了,關于gerrit是怎麼工作的,可以看下前言部分。

接下來,我們就需要配置賬号可以送出到”PendingChange”了,

然後我們看下git push之後就怎麼樣

Gerrit使用篇-送出代碼,合并代碼

在浏覽器打開上面的那個網址“http://192.168.1.3:9080/129”,内容很豐富

Gerrit使用篇-送出代碼,合并代碼
Gerrit使用篇-送出代碼,合并代碼

4.稽核代碼

添加Reviewer

Gerrit使用篇-送出代碼,合并代碼

添加的Reviewer綁定的郵箱會收一個通知郵件:

Gerrit使用篇-送出代碼,合并代碼

OK,接下來,稽核者打開網頁,閱讀代碼,比如其中的一個類檔案

Gerrit使用篇-送出代碼,合并代碼

接下來稽核者有兩種選擇

1)如果發現代碼有問題或者不符合規範,他可以點選”Abandon Change”

Gerrit使用篇-送出代碼,合并代碼

這樣,送出代碼的人會收到一個郵件通知

Gerrit使用篇-送出代碼,合并代碼

因為在送出者的git log,這個被拒絕的送出仍然存在,是以需要去除這個送出的log,通過重置到上一個送出就可以了

git reset c7ad7f432ead7289685df6a4fd53cf0c2dd63c91
           

然後重新送出就可以了。

2)稽核通過

稽核者,點選“Review”,出現下面選擇

Gerrit使用篇-送出代碼,合并代碼

需要注意:每個送出隻有滿足了”+2”和”verified”才能submit合并到master分支。

我們注意到了這裡沒有 顯示“verified”,是以我們需要去開啟這個功能,

因為“HelloGerrit”的權限內建自“AllProjects”,是以對“AllProject”的Access進行修改

Gerrit使用篇-送出代碼,合并代碼

因為我們正在修改的是refs/heads/*,是以滑動到這個位置,添加相應權限,比如我已經添加好的

Gerrit使用篇-送出代碼,合并代碼

接下來看下,回到之前的地方,點選“review”按鈕,如下圖

Gerrit使用篇-送出代碼,合并代碼

需要注意幾點:

1)合并代碼需要Code-Review的”+2”和Verified的”+1”才能使用合并功能

2)CodeReview的所有選項和Verified的所有選項可以根據團隊配置來配置設定,也可以都由一個人來做。一般情況:CodeReview的+1/-1對應初級稽核,+2/-2對應更上一級稽核;Verified就是合并之前的确認的。

這裡,我自己選擇CodeReview的”+2”和Verfied的“+1”,然後點選“Submit Patch set 1”成功了,可以看到代碼已經合并了

Gerrit使用篇-送出代碼,合并代碼

接下來就可以團隊其他成員就可以用

git pull

拉取代碼

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

其實Gerrit也可以像普通的git一樣使用,隻不過我們需要先修改一些權限, 還是像上面一樣打開權限清單,見下圖:

Gerrit使用篇-送出代碼,合并代碼

我們給“Administrators”分組添加了直接push的權限,這個分組下面的所有成員都可以像git一樣使用gerrit,如果之前使用下面的指令修改了git push

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

git config remote.origin.push master
           

如下圖是修改之後像普通的git一樣送出代碼:

Gerrit使用篇-送出代碼,合并代碼

總結

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

1)using gerrit

2)gerrit-review

3)gerrit tutorial