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系统框架介绍的更多相关文章

  1. 基于阿里云的JavaEE系统框架介绍

    基于阿里云的系统框架展望 1) CDN 用于缓存静态文件等等.七牛和阿里的都还可以. 七牛要做的久一点,各种图片处理的接口要完善一些 阿里的CDN要稍微好一点点,但是没有不安全的访问方式,访问稍微没有 ...

  2. Android系统框架介绍

    src目录:主要是完成java代码的编写 assets目录:资源目录 res目录:存在图片,布局文件和字符串.菜单等文件 bin目录:输出文件夹,如生成的APK文件 project,propertie ...

  3. Net分布式系统之一:系统整体框架介绍

    一.设计目的 从事.Net平台开发系统已有8年多了,一直思考搭建.Net分布式系统架构.基于window平台搭建的大型分布式系统不多,之前了解过myspace.stackoverflow等大型网站.搭 ...

  4. [连载]《C#通讯(串口和网络)框架的设计与实现》-1.通讯框架介绍

    [连载]<C#通讯(串口和网络)框架的设计与实现>- 0.前言 目       录 第一章           通讯框架介绍... 2 1.1           通讯的本质... 2 1 ...

  5. Selenium自动化测试框架介绍

    Selenium自动化测试框架介绍 1.测试架构作用 a.可维护性 b.提高编写脚本效率 c.提高脚本的可读性 2.框架的几大要素: Driver管理,脚本,数据,元素对象,LOG,报告,运行机制,失 ...

  6. Ext.NET 4.1 系统框架的搭建(后台) 附源码

    Ext.NET 4.1 系统框架的搭建(后台) 附源码 代码运行环境:.net 4.5  VS2013 (代码可直接编译运行) 预览图: 分析图: 上面系统的构建包括三块区域:North.West和C ...

  7. Java日志系统框架的设计与实现

    推荐一篇好的文章介绍java日志系统框架的设计的文章:http://soft.chinabyte.com/database/438/11321938.shtml 文章内容总结: 日志系统对跟踪调试.程 ...

  8. 人工智能深度学习Caffe框架介绍,优秀的深度学习架构

    人工智能深度学习Caffe框架介绍,优秀的深度学习架构 在深度学习领域,Caffe框架是人们无法绕过的一座山.这不仅是因为它无论在结构.性能上,还是在代码质量上,都称得上一款十分出色的开源框架.更重要 ...

  9. 挑战EXT——QUI框架介绍与下载

    挑战EXT——QUI框架介绍与下载 为庆祝新版QUI问世特写此文: 提起EXTJS的大名,恐怕WEB开发界无人不晓吧.EXTJS框架发展到现在,已经非常成熟和全面了.它的组件库尤其是DataGrid组 ...

随机推荐

  1. 『zkw线段树及其简单运用』

    阅读本文前,请确保已经阅读并理解了如下两篇文章: 『线段树 Segment Tree』 『线段树简单运用』 引入 这是一种由\(THU-zkw\)大佬发明的数据结构,本质上是经典的线段树区间划分思想, ...

  2. JAVA基础第二章-java三大特性:封装、继承、多态

    业内经常说的一句话是不要重复造轮子,但是有时候,只有自己造一个轮子了,才会深刻明白什么样的轮子适合山路,什么样的轮子适合平地! 我将会持续更新java基础知识,欢迎关注. 往期章节: JAVA基础第一 ...

  3. Python-爬取校花网视频(单线程和多线程版本)

    一.参考文章 python爬虫爬取校花网视频,单线程爬取 爬虫----爬取校花网视频,包含多线程版本 上述两篇文章都是对校花网视频的爬取,由于时间相隔很久了,校花网上的一些视频已经不存在了,因此上述文 ...

  4. Caffe源码理解1:Blob存储结构与设计

    博客:blog.shinelee.me | 博客园 | CSDN Blob作用 据Caffe官方描述: A Blob is a wrapper over the actual data being p ...

  5. Python:requests:详解超时和重试

    网络请求不可避免会遇上请求超时的情况,在 requests 中,如果不设置你的程序可能会永远失去响应.超时又可分为连接超时和读取超时. 连接超时 连接超时指的是在你的客户端实现到远端机器端口的连接时( ...

  6. sympy科学计算器

    SymPy库常用函数 简介 本文抄于https://www.cnblogs.com/baby123/p/6296629.html SymPy是一个符号计算的Python库.它的目标是成为一个全功能的计 ...

  7. Windows代码,添加一个节,以及RVA跟FOA互相转化,以及内存文件对齐代码.

    / 1.修改文件头节个数 +1 2.修改ImageBase 3.遍历节表,拷贝最后一个节表到下面 4.修改节的虚拟大小(节表.virtualSize) 5.修改节的虚拟地址(RVA 节表.virtua ...

  8. 目标检测之R-CNN系列

    Object Detection,在给定的图像中,找到目标图像的位置,并标注出来. 或者是,图像中有那些目标,目标的位置在那.这个目标,是限定在数据集中包含的目标种类,比如数据集中有两种目标:狗,猫. ...

  9. 解决mysql中只能通过localhost访问不能通过ip访问的问题

    解决mysql中只能通过localhost访问不能通过ip访问的问题 原因是没开权限 SELECT * FROM USER WHERE USER='root'; grant all privilege ...

  10. 第三周LINUX学习笔记

    周期性任务丶find 文件查找:find命令 locate :在数据库中查找,非实时查找,精确度不高,查找速度快,模糊查找  /tmp/passwad/a.textfind:实时查找:速度慢  ,精确 ...