Gerrit使用說明手冊

Gerrit使用說明手冊

Gerrit使用說明手冊

1. 用戶組

新用戶由系統組配置帳號後,登錄192.168.0.80輸入管理員給你創建的帳號,然後註冊,註冊相關信息,包括郵箱,全名,ssh-key 
配置界面如下: 
1.1 配置完整界面

這裏寫圖片描述

1.2 註冊實時推送郵箱,新任務會通過郵箱通知,提交到gerrit的changes中的用戶名和郵箱地址必須與gerrit用戶信息一致,否則會被拒絕,除非有Forge XXX權限。

這裏寫圖片描述

1.3 添加個人ssh-key,推送權限

這裏寫圖片描述

1.4個人界面

這裏寫圖片描述

2.倉庫權限管控

2.1 創建用戶組界面,系統管理員通過創建不同的分組,來區分不同的權限 
這裏寫圖片描述

2.2 所有項目界面,其中all-project和all-user特殊項目,通過繼承權限倉庫,賦予不同倉庫不同的控制權限; 
這裏寫圖片描述

2.3 all-project倉庫是所有倉庫的配置倉庫,所有的新建項目屬性都是繼承與該倉庫。 
這裏寫圖片描述

2.4 all-project項目的權限設置界面,包括不同分支push權限,分組信息,等等。 
這裏寫圖片描述

2.5 all-user繼承與all-project,更細分的用戶權限管理倉庫

2.6 個人私有項目的倉庫配置,裏面包括分支創建管理,權限管理, 
可以看到其中的配置也是繼承與all-project,Gerrit新建項目的權限繼承自內置項目All-Projects。默認的權限已經十分完善,但仍然需要做一些微調來滿足實際的需要。但是最好不要動All-Projects的默認權限,只修改本項目的權限,可以覆蓋掉不想要的繼承來的權限和添加新的權限。

3.分組和權限說明

(提交需要經過review+2(審覈+2) submit(提交)才合入代碼倉庫)

3.1管理員(SCM) 添加代碼倉庫,分配註冊用戶,分配個人權限

3.2審覈者(Reviewer) 擁有review +2 和abandon拒絕的權限,並使得代碼submit合入倉庫權限

3.3普通用戶(User) 擁有提交權限,review+1 權限

e.g 
權限配置可以參考該文章:http://openwares.net/linux/gerrit_privilege_setup.html

4.下載和上傳代碼

4.1 下載地址的改變 
下載地址由原來的直接通過倉庫名和Git身份下載變成了ssh+個人名稱+gerrit代碼庫名下載 
原先下載地址:

[email protected]:mtk6572_jb_tg.git

加入gerrit後的下載地址:

ssh://[email protected]:29418/mtk6572_jb_tg

(下載的時候需要連同hooks鉤子腳本,該下載地址可在gerrit直接查看複製)

可以看到我們的代碼下載地址由原來的git@倉庫變成了個人名稱@gerrit的地址,也就是下載人的屬性由原來的git用戶身份變成了個人身份 
同理push的遠程地址變成了gerrit,也就是個人的修改需要通過gerrit上審覈通過然後才合入代碼倉庫,保證代碼倉庫的安全性

4.2 push的方式改變 
原先的直接push到倉庫,會被直接拒絕,原因是gerrit不允許直接將本地修改同步到遠程倉庫。客戶機必須先push到遠程倉庫的refs/for/*分支上,等待審覈。這也是爲什麼我們需要使用gerrit的原因。gerrit本身就是個代碼審覈工具。

git push 遠程倉庫別名(默認origin) 本地分支:refs/for/遠程分支

Tip:配置config屬性可以達到和以前一樣的push方法 
git config remote.origin.push refs/heads/:refs/for/

5.代碼審覈

5.1 然後可以在gerrit的open欄看到你的提交,之後add審覈者,審覈者審覈過後決定提交是否合入(merged)代碼倉庫,或者是打回(abandoned)重新提交,右上角可以通過關鍵字查找

5.2 代碼因爲merge衝突或者是不符合審覈規則而被打回,在gerrit的abandon頁面顯示,此時遠程倉庫拒絕代碼合入,也就是遠程倉庫沒有你的提交 
而提交者本地代碼已經是屬於commit狀態需要自己撤銷掉,根據被打回原因重新提交

e.g 
merge衝突被打回,可能需要git pull 同步下代碼再做提交 
代碼不符合規則,就需要根據公司要求重新修改再做提交

e.g 
本地撤銷的方法,撤銷最近一條提交 git reset –mixed(–hard –soft) HEAD^

5.3 原先倉庫下載方式,還擁有直接push提交到倉庫的權限,所以gitosis需要修改權限,部分人(超級管理員SCM)纔能有rw權限直接push代碼到倉庫,用於一些特殊情況的直接推送,比如倉庫初始化,git push -f 強制修改等等 
普通用戶擁有ro權限,限制直接推送到服務器

6. 封裝代碼上傳腳本

http://git.oschina.net/crisy/git-gerrit


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