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