轉自: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/ : 放各類臨時文件。
這個沒什麼好介紹的,由於說明文檔說得至關詳細,咱們以前不是已經搭建好了環境了麼。直接點開說明文檔看吧。
http://IP:PORT/Documentation/config-gerrit.html
重點提示:
[gerrit]
canonicalWebUrl = http://IP:PORT #要配置成正確的地址與端口,不然訪問會有問題。
剛剛看了一下gerrit的配置2.14.5版本又多了好多配置,意味着又多了好多功能。並且如今都已經發展到2.16版本了,太恐怖。這些功能不是重點,咱們的重點是要構建工具鏈,後面會有專題好好深刻了解一下。
這個標題好大,要細講起來在一遍博文裏確定是講不完的,這裏先將個大概後面會出專題好好講。
技術 | 做用 | 備註 |
---|---|---|
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的源碼。