1 Gerrit簡介
Gerrit,一種免費、開放源代碼的代碼審查軟件,使用網頁界面。利用網頁瀏覽器,同一個團隊的軟件程序員,可以相互審閱彼此修改后的程序代碼,決定是否能夠提交,退回或者繼續修改。
1 注冊Gerrit
1.1 賬號密碼
注冊Gerrit需給Gerrit管理員(yangjunyu@wingtech.com)發送郵件獲取賬號密碼。
從管理員處獲取賬號密碼后,登錄Gerrit:http://192.168.42.21:8083/
1.1 修改名字和郵箱
如郵箱為xxxx@google.com,則“Full Name”填寫為xxxx:
注冊郵箱:
注冊成功后會給郵箱發送一封郵件,點擊鏈接進行驗證(如果某些瀏覽器無法打開驗證鏈接,復制到IE上打開):
1.1 添加用戶
linux下的用戶名須和管理員給的Gerrit賬號名相同,如果沒有,請添加新用戶:
root@BuildHost:~# adduser gerrit
1.1 添加ssh密鑰
備份.ssh(如果存在的話):
生成密鑰:
rm -rf ~/.ssh
ssh-keygen -t rsa -C "自己郵箱地址" ###一直按回車鍵即可
然后公鑰添加到Gerrit:
把 ~/.ssh/id_rsa.pub 內容復制好
粘貼到
1 開發人員使用
1.1 下載代碼
正確配置好郵箱和ssh公鑰后,根據Gerrit管理員給出的地址下載代碼:
如:git clone ssh://用戶名@192.168.42.21:29418/test
1.1 下載commit-msg腳本
【重要:使用Gerrit必須要有此腳本】
1. 拷貝腳本到本地
scp -P 29418 -p 192.168.42.21:/hooks/commit-msg .
2. 把腳本拷貝到git鈎子路徑
cp commit-msg /usr/share/git-core/templates/hooks
chmod +x /usr/share/git-core/templates/hooks/commit-msg
1.1 提交代碼審核
Gerrit不允許用戶直接push代碼到分支上(特別授權用戶除外),否則報錯:
正確的做法是所有提交都push到 HEAD:refs/for/分支名 :
格式如:git push origin HEAD:refs/for/分支名
例1:
當前處於本地分支master
代碼提交到遠程分支master上,則:git push origin HEAD:refs/for/master
例2:
當前處於本地分支developer
代碼提交到遠程分支deleloper上,則: git push origin HEAD:refs/for/developer
1.1 添加審核者
代碼正確提交到分支 refs/for/* 后,需要登錄Gerrit界面為剛才的提交添加相應的審核者:
登錄Gerrit:http://192.168.19.225:8083/, 在“changes”下可以看到剛剛的提交,名稱顯示為剛剛提交所寫的注釋
點擊進入,在“Need Code-Review”下添加相應的代碼審核者(請根據自己項目情況添加指定的審核者,此處僅作演示)
如果審核通過,會收到提示郵件(Code-Review為正數,說明審核通過,但代碼未合入分支):
代碼被合入后,會收到郵件提示(說明代碼已經正確提合入到分支):
1.1 審核失敗再提交
當收到審核失敗的郵件時(Code-Review為負數,需要記下Change-Id,下一步提交時會用上),需要修改代碼重新提交:
修改好代碼后,重新提交代碼:
【重要:代碼審核失敗后,重新提交時必須使用 git commit --amend,否則會生成新的評審任務,無法與上一次審核任務關聯】
【重要:注釋可以重新寫,但是其中“Change-Id”必須為上一次審核任務失敗的Change-Id,可在Gerrit或者上一步的郵件中查看得到】
再push代碼到Gerrit:
最后無需重復步驟“3.3 提交代碼審核”,Gerrit會自動給原來的審核者發送相應郵件
4 審核人員使用
4.1 收到審核郵件
當有審核任務郵件時,點擊鏈接打開Gerrit
4.2 查閱審核任務
打開審核任務如下:
4.3 添加其他審核者
如果需要,這里可以添加其他人員審核(需要有審核權限)
4.4 查看修改內容
點擊“Side-by-Side”按鈕,查看修改內容:
點擊“next”查閱下一項修改:
4.5 審核通過/失敗
點擊“Review”
審核通過:
審核失敗:
代碼提示被blocked:
審核失敗的任務會給提交者發送郵件,通知其修改
5 其他
5.1 常用別名設置
git config --global alias.st status
git config --global alias.ci commit
git config --global alias.co checkout
git config --global alias.br branch
git config --global color.ui true
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset %C(bold blue)<%an>%Creset ---%C(yellow)%d%Creset %s %Cgreen(%cr)' --abbrev-commit"