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

相关文章
相关标签/搜索