Gerrit系統框架介紹

Gerrit目錄介紹

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

先上圖html

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

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

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

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

     gerrit支持的數據庫:git

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

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

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

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的源碼。

相關文章
相關標籤/搜索