Gerrit的用法及与gitlab的区别

Python微信订餐小程序课程视频

https://edu.csdn.net/course/detail/36074

Python实战量化交易理财系统

https://edu.csdn.net/course/detail/35475
来到一个新的团队,开发的代码被同事覆盖了。找同事核实,同事却说根本没有看到我的代码。经过一番沟通了解,原来他们的代码没有直接在gitlab上操作,而是先提交到gerrit,然后在提交到git。但是代码拉取的时候,不会直接从gitlab上拉取。所以,我提交到gitlab上的代码,同事们都没有拉取到。

新团队使用的代码审核工具是gerrit,因为之前一直使用的是gitlab,审题提交也都是使用的gitlab。但是新团队的小伙伴说他们提交,拉取都到gerrit上,我问:那不用集团的gitlab么?同事说最终代码还是保存在gitlab上,gerrit的作用就是用来审核的,当时有一个疑问,就是一个代码审核工具嘛,为什么不直接用gitlab呢,而要多一个工具审核呢?得到的答复是gitlab不好用。因为不了解gerrit,也不好多说,但是心里有个大大的问号。

我的疑惑是,gitlab的代码审核功能为何不好用?为何一定要嵌入一个新的工具gerrit呢?而这个工具的主体代码还是在gitlab上,只是起到了审核的作用。所以,我要弄清两个问题,这篇文章要解决两个问题

1.Gerrit的用法,优缺点

2.和Gitlab在权限管理上的区别

一、Gerrit的用法

参考文档:http://39.106.94.54:50000/002-常用基础服务/05-gerrit服务部署/

1、Gerrit介绍

Gerrit是建立在git版本控制系统之上的,基于web的代码审核工具。Gerrit是免费的,开源的,有一个可视化界面可供用户操作。主要解决的问题是代码审核。他在传统的源码工具管理协作流程中强制性引入代码审核机制,通过人工代码审核和自动化代码验证的方式,不符合要求的代码屏蔽在代码库之外,确保核心代码多人校验、多人互备和自动化构建核验。

2、Gerrit的使用

1)依赖组件

- 安装git:版本管理工具

- 安装gerrit:不用说了,我们的今天的主角

- 安装nginx:启动gerrit使用

- 安装java:初始化gerrit使用

- 安装mysql数据库:用来保存gerrit中的用户以及用户提交的记录

- 安装gitlab:用来和gerrit做集成

- 集成jenkins:代码提交到gerrit时,自动提交到gitlab

2)Gerrit安装部署

第一步:安装git

yum -y install git

第三步:安装和配置数据库

这一步省略了数据库安装步骤,使用现有数据库就可以。

创建gerritdb数据库

create database gerritdb CHARACTER SET utf8 COLLATE utf8_general_ci;

给用户授权,我这里是root用户, 所以,不用在授权了

grant all on gerritdb.* to 'gerrituser'@'localhost'identified by 'gerritpass';

第二步:安装gerrit

下载地址:https://www.gerritcodereview.com/

将其拷贝到/root目录下

在root下创建一个项目gerrit

并且解压项目

java -jar gerrit-3.5.0.1.war init -d /root/gerrit/

以下为安装大致内容

切换到root用户下,然后执行安装命令, 安装过程中除数据库选用mysql(并配置对应gerrit的数据库和密码)、开启方向代理并配置端口外,其他均选默认即可

修改配置文件

[gerrit]basePath = gitcanonicalWebUrl = http://10.211.55.200:8080/serverId = d69a4326-ef00-45f2-bb84-8c91dd9af221
[database]type = mysqlhostname = 10.14.181.145database = gerritdbusername = rootpassword = 123456
[container]javaOptions = "-Dflogger.backend\_factory=com.google.common.flogger.backend.log4j.Log4jBackendFactory#getInstance"javaOptions = "-Dflogger.logging\_context=com.google.gerrit.server.logging.LoggingContext#getInstance"user = rootjavaHome = /usr/lib/jvm/java-11-openjdk-11.0.14.1.1-1.el7_9.x86_64
[index]type = lucene
[auth]type = HTTP
[receive]enableSignedPush = false
[sendemail]smtpServer = localhost
[sshd]listenAddress = *:29418
[httpd]listenUrl = http://*:8080/
[cache]directory = cache

重启服务

/root/gerrit/bin/gerrit.sh restart

这时在服务器验证是否启动成功

curl -GET http://localhost:8080

又返回,提示HTTP server did not provide the username,接下来配置nginx

第四步:安装nginx

nginx下载地址:http://nginx.org/en/download.html

安装nginx的依赖

yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel

解压nginx文件

tar -zxvf nginx-1.18.0.tar.gz

进入解压后目录执行编译

./configure --with-http_ssl_module

编译参数有很多,这边我只增加了SSL模块,小伙伴可以根据自身情况调整

–prefix=PATH:指定 nginx 的安装目录
–conf-path=PATH:指定 nginx.conf 配置文件路径
–user=NAME:nginx 工作进程的用户
–with-pcre:开启 PCRE 正则表达式的支持
–with-http_ssl_module:启动 SSL 的支持
–with-http_stub_status_module:用于监控 Nginx 的状态
–with-http-realip_module:允许改变客户端请求头中客户端 IP 地址
–with-file-aio:启用 File AIO
–add-module=PATH:添加第三方外部模块

执行完上述命令后,在解压目录下,多出一个Makefile文件

image
执行make命令

make

执行make install 命令

make install

因编译时未指定安装目录,执行make install 命令后看到反馈日志信息,实际安装目录为/usr/local/nginx
进入实际安装目录,看看,并在其sbin目录下执行启动nginx

cd /usr/local/nginx/
./nginx

image
配置nginx作为代理认证,设置nginx的80端口直接跳转到gerrit的登录

    server {listen       80;server_name  localhost;location / {#root   html;#index  index.html index.htm;auth_basic              "Gerrit Code Review";auth_basic_user_file    /passwords;proxy_pass              http://127.0.0.1:8080;proxy_set_header        X-Forwarded-For $remote_addr;proxy_set_header        Host $host;}}

auth_basic 是否开启使用“HTTP基本认证”(HTTP Basic Authentication)协议的用户名密码验证, 默认不开启

语法: auth_basic string | off;
默认值: auth_basic off;
上下文: http,server,location,limit_except

auth_basic 值为off表示不开启HTTP基本认证。

auth_basic指定了字符串,那么字符串会在弹窗中显示

auth_basic_user_file 指定保存用户名密码的文件

语法: auth_basic_user_file file;
默认值: —
上下文: http,server,location,limit_except

接下来,创建保存用户名密码的文件

touch /passwords
htpasswd -m /passwords admin密码设置为 123456

可以查看文件内容

image
重启nginx

访问nginx服务器,端口是80

http://10.211.55.200/

image
登录成功后,会直接跳转到http://10.211.55.200:8080,如下界面。

image
我这个是新版本的,创建项目在BROWER下的Repository–>CREATE NEW

image
上面创建了一个管理员账号

接下来创建普通用户账号

touch /gerrit.password

htpasswd -m /gerrit.password test

密码为 123456

普通用户登录看不到创建项目的按钮。其他功能都是差不多的

二、对比Gerrit和gitlab

Gerrit其实就是多了一个审核功能,个人觉得没有必要非要使用gerrit,尤其是小团队。gitlab的审核功能足够了。gitlab+gerrit 更是架空了gitlab,还多费一遍事。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/401269.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人事资料

考察人品 1. 你有缺点吗 2. 当你发现你的顶头上司用办公电话聊私事,你会怎么做 3. 作为财务经理,如果总经理要求你在一年之内逃税100万,你会怎么做 4. 你的耳环多少钱买的 考察能力 1&#…

c语言位段

通常计算机最小处理单元基本就是byte字节了,就是八个二进制位,位段则是按计算机中真正的最小单位二进制位来存储处理数据,可以更高效的利用内存。 位段(bit-field)是以位为单位来定义结构体(或联合体)中的成员变量所占的空间。含有位段的结构…

The 15th UESTC Programming Contest Preliminary H - Hesty Str1ng cdoj1551

地址:http://acm.uestc.edu.cn/#/problem/show/1551 题目: Hesty Str1ng Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) A chrysanthemum was painted on the second page, and we tried to use the magic pow…

python基础之序列类型的方法——列表元组

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 Hello大家好,我是python学习者小杨同学,上次跟大家分享关于python的数值类型和序列类型,…

北方网-ios预科班

http://www.tudou.com/listplay/9oNp8KgmJZw.html 转载于:https://www.cnblogs.com/freeliver54/archive/2012/09/16/2687189.html

管家婆SQL SERVER数据库“可能发生了架构损坏。请运行DBCC CHECKCATALOG”修复

【数据库故障描述】用户在使用过过程中,由于突然断电,造成数据无法读取。DBCC检测数据库提示以下错误消息211,级别23,状态51,第1 行可能发生了架构损坏。请运行DBCC CHECKCATALOG。消息0,级别20&#xff0c…

1009 产生数 2002年NOIP全国联赛普及组

009 产生数 2002年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description给出一个整数 n&#xff08;n<10^30) 和 k 个变换规则&#xff08;k<15&#xff09;。  规则&#xff1a;   一位数可变换成另一个一位数&#…

K近邻算法

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 一、K近邻算法简介 K近邻算法(K-Nearest Neighbor)简称KNN算法,是最简单的预测模型之一&#xff0c;它没有多少数学上的假设…

easyui 点滴记录

为什么80%的码农都做不了架构师&#xff1f;>>> 【1.安装】&#xff1a;pip install easygui 【2.常用】 integerbox 交互式输入数字textbox 交互式输入文本ccbox 确认判断boolbox 是否判断multchoicebox 多选条目choicebox 单选条目buttonbox 单选按钮【3.体验一…

如何在邮件系统中使用自己的域名?

如何在邮件系统中使用自己的域名&#xff1f; 主要分为以下两种情况&#xff1a;1.MX记录已经存在&#xff1a; 如果MX记录已经存在&#xff0c;并且已经检查出是在某一个域名服务器上&#xff0c;您需要做的工作就是与您的域名服务商或该域名服务器的管理人员联系&#xff0c;…

IAR切BANK--BANK说明

一、为什么要用到BANK&#xff1f; C51单片机的最大寻址范围为2^1664K&#xff0c;为了突破64K代码的限制&#xff0c;就需要采用C51的切BANK。 二、切BANK的原理 代码地址空间的上半部 ,以重叠BANK0的物理地址空间 , 硬件设计了 n个存储 器页面来存储程序代码 。在任一时刻 …

pl/sql developer 自带汉化选项

pl/sql developer 自带汉化选项 版本&#xff1a;11.0.2 工具 -> 选项 -> 用户界面 ->外观&#xff0c; 第一项就是选择语言&#xff1b; 选择Chinese.lang&#xff0c;如果有的话&#xff1b; 转载于:https://www.cnblogs.com/stono/p/6645548.html

实现自己的BeanFactory、AOP以及声明式事务

实现自己的BeanFactory 在使用spring时&#xff0c;我们很少用"new"关键字创建对象&#xff0c;而是通过spring容器BeanFactory提供的getBean()方法得到对象&#xff1a; BeanFactory ctx new C…

Docker遇到的一些问题和感想

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 Docker 是“不可变”架构。 当你希望改变一个服务的时候&#xff08;比如更新版本、修改配置、开放端口&#xff09;&#…

hdu 4293 Groups DP

http://acm.hdu.edu.cn/showproblem.php?pid4293 题意&#xff1a; 有n个人分成了若干组走在一条林荫道路上&#xff0c;导游为了能够确定人数&#xff0c;要求每个人喊出自己所在的队伍前边有多少人Ai表示,后边有多少人Bi表示&#xff0c;于是我们得到了n条信息。这里面有错误…

IAR切BANK--命令连接器文件xcl格式说明

IAREWARM中段后缀含义 后缀 段类型 含义 AC CONST 绝对地址定位常数 AN DATA 用关键字__no_init声明的绝对地址定位数据 C CONST 常数 I DATA 初始化值为非0的数据 ID CONST 上述数据的初始式 N DATA 未初始化的数据 Z DATA 初始化值为0的数据 ROM用于…

ARM系列处理器的分类

1.ARM ARM即以英国ARM&#xff08;Advanced RISC Machines&#xff09;公司的内核芯片作为CPU&#xff0c;同时附加其他外围功能的嵌入式开发板&#xff0c;用以评估内核芯片的功能和研发各科技类企业的产品. ARM 微处理器目前包括下面几个系列&#xff0c;以及其它厂商基于 AR…

DBA_Oracle Table Partition表分区概念汇总(概念)

2014-06-20 Created By BaoXinjian 一、摘要 有关表分区的一些维护性操作&#xff1a; 注&#xff1a;分区根据具体情况选择。 表分区有以下优点&#xff1a; 1、数据查询&#xff1a;数据被存储到多个文件上&#xff0c;减少了I/O负载&#xff0c;查询速度提高。 2、数据修剪&…

electron打包vue项目

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 创建项目 点击这里 添加electron-builder 1、在项目目录下运行命令&#xff1a;vue add electron-builder 2、electron-…

Hdu 4293 DP

题意&#xff1a; n个人说自己前面有多少人 后面有多少人 求出说真话人数最多的情况 每个样例有 一个 n 表示n个人 接下来 n 行有a b 表示他前面的人数和后面的人数 思路&#xff1a; 如果已经知道了其中一组的人数~ 就往前找..找在这一组之前与这一组的话不矛盾的最多人数 Ti…