Gerrit系統框架介紹


Gerrit目錄介紹

轉自:https://blog.csdn.net/tanshizhen119/article/details/79889242

先上圖

bin/ : 主要是放gerrit.sh啟動腳本,以及gerrit.war包

cache/ : 是放緩存文件,gerrit使用的緩存模式是h2數據庫,以及guava緩存模塊來做的。

data/ : 此目錄是插件生成,非gerrit必需目錄

db/ : gerrit默認使用的是H2數據庫(gerrit是可以支持其他數據庫的,例如:mysql, postgres)——默認數據庫的名稱是reviewdb,數據庫存放的路徑是可以進行配置的。不過現在gerrit會把一些數據從它的默認數據庫移出來,用H2來存放,例如:account_patch_reviews.h2.db, 之前是和2.11版本的時候是和主數據庫放在一起的,后面再2.13版本的時候獨立出來放到里H2數據庫當中。

     gerrit支持的數據庫:

     H2
    Apache Derby
    PostgreSQL
    MySQL
    MariaDB
    Oracle
    SAP MaxDB
    DB2
    SAP HANA

etc/ :  放置gerrit.config 配置文件,secure.config密碼相關配置文件,同時里面還設有發郵件的模板,服務端sshkey等。插件的配置文件也都會放在此目錄下。

git/ : 此目錄是存放git倉庫,這個目錄也是可以再gerrit.config進行配置。

index/ : 此目錄是放置gerrit索引,gerrit所以是使用lucene。 主要是對評審單,賬戶信息。(后面慢慢還加入了group組信息,這是要慢慢的提高真個gerrit服務性能的節奏)

lib/ : 放置第三方庫的,gerrit啟動的時候會加載此目錄下的jar包。例如:要把gerrit數據庫改成mysql,需要在此目錄下放mysql驅動包

logs/ :運行日志

plugins/ : 存放gerrit插件,插件有啟動加載的,有實時加載的,這個到如何開發插件的時候再細講。

static/ : 放一些圖片之類的,gerrit是可以自己自定義企業logo的。而且后面如果我們做定制化開發的是,如果有一些靜態資源文件,我們需要放在這里。

貌似這樣的,不過eclipse這個顯示貌似有點問題。

tmp/ : 放各種臨時文件。

Gerrit配置介紹

這個沒什么好介紹的,因為說明文檔說得相當詳細,我們之前不是已經搭建好了環境了么。直接點開說明文檔看吧。

http://IP:PORT/Documentation/config-gerrit.html

重點提示:

[gerrit]

canonicalWebUrl = http://IP:PORT #要配置成正確的地址與端口,否則訪問會有問題。

剛剛看了一下gerrit的配置2.14.5版本又多了好多配置,意味着又多了好多功能。而且現在都已經發展到2.16版本了,太恐怖。這些功能不是重點,我們的重點是要構建工具鏈,后面會有專題好好深入了解一下。

Gerrit系統框架介紹

這個標題好大,要細講起來在一遍博文里肯定是講不完的,這里先將個大概后面會出專題好好講。

gerrit技術棧

 

技術 作用 備注
GWT

gerrit前端頁面是采用google的gwt框架編寫的,主要就是用java來寫javascript,

寫的java代碼最后會編譯出js,反正我覺得好惡心搞一個編譯環境都好艱難,不過

2.14版本推出了一個新UI,不過感覺還是奇丑無比,GITLAB會比它好看很多。

 
GUICE

Guice是Google開發的一個輕量級依賴注入的框架,類似SPRING,但是比SPRING

更加輕量一些,出了平常對象依賴注入管理,它本身還提供一個和WEB相關的容

器管理,詳情大家可以好好看看相關的教程。gerrit都是在使用GUICE來做依賴注入

 
JGIT

JGTI是eclipse開源的一個純得不能再純java寫一個git操作包,gerrit 的git相關操作

都是用此包來完成。

 
LUCENE

全文檢索工具,之前流行的solr和現在炒得熱火朝天的es(ElasticSearch)都是基於它,

gerrit使用它來存放change(評審單),賬戶,2.14版本里面又增加一個組信息。

 
ELASTICSEARCH 是2.14版本新加的,剛出來的不知道性能怎么樣。作用同LUCENE一樣。  
GUAVA

谷歌java項目廣泛依賴的核心庫,里面有集合,緩存,基礎工具包等等。一大堆在

gerrit里面表現的淋漓盡致。同時GUAVA被愛程度在github能排前五。

 
SSHD

apache開源的一個完全使用java庫編寫的一個關於SSH協議操作的項目。其中有

客戶端,服務端,還有SSH agent等等。gerrit使用它來做SSH服務端。建議使用

1.2以上的版本,因為它留了接口支持代理協議,然后社區貢獻又貢獻了proxy 

protocol V1版本。現在nginx已經支持TCP轉發了,這樣使用代理協議就可以獲取

到客戶端的源IP.

 
GITWEB

gitweb是使用perl腳本語言寫的一個web服務端吧,主要是用來瀏覽代碼的。gerrit

這邊會起一個servlet來接收gitweb請求,並轉發到服務器上部署的gitweb上。

 
其他 剩下的就是一個常規的技術了,如果有遇到個人覺得比較重要的再進行更新。  

 

 



















gerrit模塊介紹

 

大概就是上面這樣的圖,縱觀整個gerrit功能也就這樣了,不過有些功能確實做得挺好的,查看實現也是挺復雜的。

這篇先這樣,下篇再將一下gerrit要如何編譯以及gerrit插件開發后面再更深入的了解一下gerrit的源碼。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM