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组 ...
随机推荐
- kubernetes进阶之四:Label和Label Selector
一:什么是Label Label是Kubernetes系列中另外一个核心概念.是一组绑定到K8s资源对象上的key/value对.同一个对象的labels属性的key必须唯一.label可以附加到各种 ...
- 并发的核心:CAS 与synchronized, Java8是如何优化 CAS 的?
大家可能都听说说 Java 中的并发包,如果想要读懂 Java 中的并发包,其核心就是要先读懂 CAS 机制,因为 CAS 可以说是并发包的底层实现原理. 今天就带大家读懂 CAS 是如何保证操作的原 ...
- Vue 进阶之路(二)
之前的文章我们初识了 vue,对其原理,数据绑定和方法进行了简单的演示,本篇将对 vue 插值表达式,v-text,v-html 进行讲解. <!DOCTYPE html> <htm ...
- javascript-发布订阅模式与观察者模式
设计模式"(Design Pattern)是针对编程中经常出现的.具有共性的问题,所提出的解决方法.著名的<设计模式>一书一共提出了23种模式. 发布订阅模式 它定义了一种对象间 ...
- SLAM+语音机器人DIY系列:(六)SLAM建图与自主避障导航——2.google-cartographer机器人SLAM建图
摘要 通过前面的基础学习,本章进入最为激动的机器人自主导航的学习.在前面的学习铺垫后,终于迎来了最大乐趣的时刻,就是赋予我们的miiboo机器人能自由行走的生命.本章将围绕机器人SLAM建图.导航避障 ...
- NET微信公众号开发环境搭建(一)-了解微信由来
公众号的应用,开发及调试环境搭建 花生壳要注册 需要二十多块钱 ,还要实名认证,估计要一两天才能审核通过 主要就是在 windows搭建测试环境 1.微信的应用场景 360百科微信简介 ht ...
- Git来操作GitHub~
设置用户名(设置一次 以后就不用再设置了) git config --global user.name 'taopanfeng' 设置邮箱(设置一次 以后就不用再设置了) git config --g ...
- postgresql 使用pg_restore时显示role "root" does not exist的解决办法
在docker里恢复bakcup格式的数据库,结果提示role "root" does not exist 解决方法: 切换用户: su - postgres 然后再次运行命令: ...
- Windows 10 ADK 版本及下载链接汇总
Windows 评估和部署工具包 (Windows ADK) 具有自定义大规模部署的 Windows 映像以及测试系统.添加的组件和在该系统上运行的应用程序的质量和性能所需的工具. Windows A ...
- centos7 ambari2.6.1.5+hdp2.6.4.0 大数据集群安装部署
前言 本文是讲如何在centos7(64位) 安装ambari+hdp,如果在装有原生hadoop等集群的机器上安装,需要先将集群服务停掉,然后将不需要的环境变量注释掉即可,如果不注释掉,后面虽然可以 ...