转自: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的源码。