GitLab 與 Gerrit對比

開發風格

gitlab的特點是一個人維繫一個分支。
gerrit的特點是一個團隊維繫一個分支。(這裏的分支對應一個業務需求)

權限管理

gitlab提供了比較多的選擇,可以根據需要創建project,每個團隊可以根據自己的需求管理自己的代碼,方式更加的靈活。

gerrit比較單一,而且權限配置比較複雜,往往都是要聯繫管理員做出修改,每個團隊很難做到對代碼的個性化管理。

代碼評審

gitlab是以merge request作爲一次review,merge request中可能包含多個 commit,如果review不通過也不需要發起另一次merge request。

gerrit是以commit作爲一次review,由於changeId的存在,可以對一次commit反覆的進行review。
如果task劃分的粒度夠細的話,並不會影響各個團隊的review習慣。

團隊協作

gitlab可以選擇公開代碼,團隊間可以看到互相的代碼,有利於團隊的協作。
gerrit由於權限控制問題,只能在權限範圍內公開代碼。

信息共享

gitlab 可以提供issues,wiki等功能方便開發者與使用者之間的溝通,並且gitlab可以無縫的與一些項目管理工具集成,比如:jira。
gerrit 這個方面比較欠缺。
gitlab每個項目都有自己的wiki,很方便查看。

有關gitlab+gerrit+jenkins集成

現在比較流行的CI系統,gitlab提供代碼查看功能,gerrit保存真正得代碼,jenkins通過plugin發佈 gerrit上的代碼。
這樣做沒有體現出gitlab的特點,而且由於gerrit的權限問題,很多代碼無法放在gitlab上,gitlab淪爲代碼查看工具,很多功能形同虛設。
有關docker:
考慮到公司將使用docker技術,對於dockerfile存放等問題,gitlab比gerrit支持的更好(因爲權限,文件查看的問題)。

有關CI:

jenkins提供了plugin,可以通過從gitlab上拉取代碼直接部署(已測試成功,CA採用sshkey)。

總結

gerrit作爲谷歌管理安卓項目的版本管理工具還是有其優點的,
多部門之間的權限隔離,強制review的機制都是其優點,
反觀gitlab作爲github的開源版,遵循了一套開源的流程,比較符合大多數人得習慣。
所以,通過比較,推薦使用gitlab作爲版本管理工具,並且不與gerrit做集成。

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