Gerrit系统框架介绍
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的源码。
Gerrit系统框架介绍的更多相关文章
- 基于阿里云的JavaEE系统框架介绍
基于阿里云的系统框架展望 1) CDN 用于缓存静态文件等等.七牛和阿里的都还可以. 七牛要做的久一点,各种图片处理的接口要完善一些 阿里的CDN要稍微好一点点,但是没有不安全的访问方式,访问稍微没有 ...
- Android系统框架介绍
src目录:主要是完成java代码的编写 assets目录:资源目录 res目录:存在图片,布局文件和字符串.菜单等文件 bin目录:输出文件夹,如生成的APK文件 project,propertie ...
- Net分布式系统之一:系统整体框架介绍
一.设计目的 从事.Net平台开发系统已有8年多了,一直思考搭建.Net分布式系统架构.基于window平台搭建的大型分布式系统不多,之前了解过myspace.stackoverflow等大型网站.搭 ...
- [连载]《C#通讯(串口和网络)框架的设计与实现》-1.通讯框架介绍
[连载]<C#通讯(串口和网络)框架的设计与实现>- 0.前言 目 录 第一章 通讯框架介绍... 2 1.1 通讯的本质... 2 1 ...
- Selenium自动化测试框架介绍
Selenium自动化测试框架介绍 1.测试架构作用 a.可维护性 b.提高编写脚本效率 c.提高脚本的可读性 2.框架的几大要素: Driver管理,脚本,数据,元素对象,LOG,报告,运行机制,失 ...
- Ext.NET 4.1 系统框架的搭建(后台) 附源码
Ext.NET 4.1 系统框架的搭建(后台) 附源码 代码运行环境:.net 4.5 VS2013 (代码可直接编译运行) 预览图: 分析图: 上面系统的构建包括三块区域:North.West和C ...
- Java日志系统框架的设计与实现
推荐一篇好的文章介绍java日志系统框架的设计的文章:http://soft.chinabyte.com/database/438/11321938.shtml 文章内容总结: 日志系统对跟踪调试.程 ...
- 人工智能深度学习Caffe框架介绍,优秀的深度学习架构
人工智能深度学习Caffe框架介绍,优秀的深度学习架构 在深度学习领域,Caffe框架是人们无法绕过的一座山.这不仅是因为它无论在结构.性能上,还是在代码质量上,都称得上一款十分出色的开源框架.更重要 ...
- 挑战EXT——QUI框架介绍与下载
挑战EXT——QUI框架介绍与下载 为庆祝新版QUI问世特写此文: 提起EXTJS的大名,恐怕WEB开发界无人不晓吧.EXTJS框架发展到现在,已经非常成熟和全面了.它的组件库尤其是DataGrid组 ...
随机推荐
- 前端笔记之ES678&Webpack&Babel(下)AMD|CMD规范&模块&webpack&Promise对象&Generator函数
一.AMD和CMD规范(了解) 1.1传统的前端开发多个js文件的关系 yuan.js中定义了一个函数 function mianji(r){ return 3.14 * r * r } main.j ...
- pytest-allure-poco之allure全量详细用法
allure简介 Allure Framework是一个灵活的轻量级多语言测试报告工具.貌似是目前最漂亮的一个报告工具 python版本及必要库或工具 python 3.7 pytest 4.3.1 ...
- Netty源码—三、select
NioEventLoop功能 前面channel已经准备好了,可以接收来自客户端的请求了,NioEventLoop作为一个线程池,只有一个线程,但是有一个queue存储了待执行的task,由于只有一个 ...
- 看看redis中那些好玩的module (sql on redis, bf/cf on redis)
自从redis加入了module功能之后,redis的生态就很有意思了,每个领域的大佬都会以插件的形式给redis扩展一些新的功能,比如本篇说到的rediSQL,rebloom. 一:rediSQL ...
- HTML 练习显示隐藏
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- java多线程的几种状态
java线程状态在Thread中定义,源码中能看到有个枚举State,总共定义了六种状态: NEW: 新建状态,线程对象已经创建,但尚未启动 RUNNABLE:就绪状态,可运行状态,调用了线程的sta ...
- goldengate同源一目标+多表和同源多目标+多表
小结一下,永记心中!几经修改,看见完美曾经遇到的问题或值得注意的地方,就此记录一下,以免再犯开始...******************同源一目标+多表******************针对部分表 ...
- SQL Server统计信息偏差影响表联结方式案例浅析
我们知道数据库中的统计信息的准确性是非常重要的.它会影响执行计划.一直想写一篇关于统计信息影响执行计划的相关博客,但是都卡在如何构造一个合适的例子上,所以一直拖着没有写.巧合,最近在生产环境中遇到 ...
- r.js合并实践
项目中用到require.js做生产时模块开发,但上线要合并压缩,幸好它配套有r.js.下面就其用法说明一下. 首先建一个目录,里面的结构如下: require.js可以到r.js项目下载 r.js可 ...
- js取数组最大值的四种方式
var arr = [7,2,0,-3,5];1.apply()应用某一对象的一个方法,用另一个对象替换当前对象 var max = Math.max.apply(null,arr);console. ...