前言
在使用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 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
在把gerrit當成普通git使用之前,需要做如下修改
git config remote.origin.push master
如下圖是修改之後像普通的git一樣送出代碼:
總結
不知道安裝gerrit,可以看下我之前寫的Gerrit安裝篇,以後有時間會根據實際項目使用,來繼續補充gerrit使用。你也可以連結到下面三個地方深入學習gerrit
1)using gerrit
2)gerrit-review
3)gerrit tutorial