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组 ...
随机推荐
- Django:Python3.6.2+Django2.0配置MySQL
持续学习Django中... Django默认使用的数据库是python自带的SQLlite3,但SQLlite并不适用于大型的项目,因此我将数据库换成了MySQL,下面介绍下Django如何配置数据 ...
- 经典Hash函数的实现
Hash函数是指把一个大范围映射到一个小范围.把大范围映射到一个小范围的目的往往是为了节省空间,使得数据容易保存. 除此以外,Hash函数往往应用于查找上.所以,在考虑使用Hash函数之前,需要明白它 ...
- nuxt Window 或 Document未定义解决方案
概述 在用nuxt开发服务端渲染项目并引入第三方库的时候,经常会遇到window或document未定义的情况,原因是这个第三方库里面用到了window或者document,然后在服务端打包的时候,n ...
- 同源策略 & 高效调试CORS实现
# 目录 为什么有同源策略? 需要解决的问题 CORS跨域请求方案 preflight withCredentials 附:高效.优雅地调试CORS实现 ----------------------- ...
- VS2017 WinFrom打包设置与教程
前言 项目中有用到winfrom做配套的打印程序,直接给客户一个debug文件夹,当然不是很好.. 记录一下打包过程. 正文 首先需要下载 Visual Studio插件,到如图的地方下载: 搜索Mi ...
- HttpServletRequest 接口、HttpServletResponse 接口、请求转发与重定向
上篇文章我们讲了servlet的基本原理,这章将讲一下剩余的部分. HttpServletRequest 接口 该接口是 ServletRequest 接口的子接口,封装了 HTTP 请求的相关信息, ...
- ef和mysql使用(一)
ef开发模式有3种:DateBase First(数据库优先).Model First(模型优先)和Code First(代码优先).这里我用的是code first 一个简单的例子: public ...
- Python之路【第一篇】:Python简介和入门
python简介: 一.什么是python Python(英国发音:/ pa θ n/ 美国发音:/ pa θɑ n/),是一种面向对象.直译式的计算机程序语言. 每一门语言都有自己的哲学: pyth ...
- 数据库常用操作SQL语句
禁用触发器: alter table tb disable trigger tir_name 启用触发器: alter table tb enable trigger tir_name
- Linux 桌面玩家指南:10. 没有 GUI 的时候应该怎么玩
特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之 ...