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文件


执行make命令

make

执行make install 命令

make install

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

cd /usr/local/nginx/
./nginx


配置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

可以查看文件内容


重启nginx

访问nginx服务器,端口是80

http://10.211.55.200/


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


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


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

接下来创建普通用户账号

touch /gerrit.password

htpasswd -m /gerrit.password test

密码为 123456

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

二、对比Gerrit和gitlab

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

Gerrit的用法及与gitlab的区别相关推荐

  1. 分号与逗号的区别及举例_如何掌握分号的用法 和顿号有什么区别

    如何掌握分号的用法 和顿号有什么区别2019-03-08 15:57:09文/李男 考试中作文成绩因为标点符号丢分的情况时有发生,看到这样丢分的情况,令人叹息.下面小编整理了一些关于分号的用法,供大家 ...

  2. C语言中,#include的用法:#include 和 #include区别

    C语言中,#include的用法:#include "" 和 #include<>区别 采用 " ":依次搜索当前目录.包括/I编译开关的路 ...

  3. Git,GitHub与GitLab的区别

    文章目录 Git GitHub GitLab Git,GitHub与GitLab的区别 Git Git(读音为/gɪt/.)是一个开源的分布式版本控制系统,可以有效.高速地处理从很小到非常大的项目版本 ...

  4. c++中static_cast用法与uchar/char的区别

    1.c++中static_cast用法 static_cast是指显性类型强制转换,如: int a = static_cast<int>(120.34); 结果为a= 120. 和C语言 ...

  5. #define用法以及#define和typedef区别

    1.简单的define定义 #define MAXTIME 1000 2.define的"函数定义" define可以像函数那样接受一些参数,如下 #define max(x,y) ...

  6. Git复习(十三)之git revert用法及与git reset区别

    git revert用法以及与git reset的区别 git revert用法 git revert 撤销 某次操作,此次操作之前和之后的commit和history都会保留,并且把这次撤销 作为一 ...

  7. [Golang]slice的用法以及和数组的区别

    说明 slice是go的一个语言特性,其实有点类似于cpp的vector,可变长度,可以扩展空间.今天详细看了下,做下总结. slice本质上是一个区间,原型是[]T,大致的实现是这样的: type ...

  8. Git、Github和GitLab的区别及与SVN的比较

    个人理解: SVN适合领导啊,大家一起在加班,看你进度什么的,git则不必如此,忙完传上来完活. 一.含义: 百度上这样介绍的: Git(读音为/gɪt/.)是一个开源的分布式版本控制系统,可以有效. ...

  9. Tk_Batis 介绍和用法以及和Jpa 的区别

    什么是 Tk_Batis ??(以下介绍仅代表个人看法) Tk_Batis 是在 MyBatis 框架的基础上提供了很多工具,个人感觉就相当于一个通用的 Mapper 仅限单一实体类操作 为什么要用 ...

最新文章

  1. Flutter 实现根据环境加载不同配置
  2. GO语言教程1:Linux--debian/ubuntu下Go语言的安装
  3. python 微信发送图片失败什么原因_[已解决] Appium-Python 测试聊天时同时发送 9 张图片的问题...
  4. java好还是python好-现在学Python还是Java好呢?
  5. 开发函数计算的正确姿势 —— 使用 Fun Local 本地运行与调试
  6. 深度学习核心技术精讲100篇(四十一)-阿里飞猪个性化推荐:召回篇
  7. 经典C语言程序100例之五七
  8. Android动画原理
  9. AD4003 VHDL设计及仿真
  10. 傻子坐飞机问题的求解
  11. [转载] 深入理解Linux修改hostname
  12. oracle rac数据库特点,Oracle RAC集群结构的特点和缺点
  13. python yield from_python中yield的用法以及和yield from的区别
  14. 点在多边形内 java_判断点在多边形内部的方法(Java版)
  15. WPF在一个窗口中实现多个视图
  16. Javascript第六章JavaScript用new创建对象第一课
  17. HFSS印刷偶极子天线(2)
  18. 海森(hessian)矩阵
  19. Cesi运行报错AttributeError: can‘t set attribute
  20. 鸵鸟腿“半兽人”已学会跟踪避障,可自主移动到安全距离

热门文章

  1. java中单例模式的3种实现
  2. Exchange2003-2010迁移系列之二,迁移前的准备工作(上)
  3. freebsd点到点的ipsec ***
  4. mysql那本书适合初学者_3本书适合初学者
  5. web数据交互_通过体育运动使用定制的交互式Web应用程序数据科学探索任何数据...
  6. leetcode 231. 2 的幂
  7. SpringCloud入门(一)
  8. spring— Bean标签scope配置和生命周期配置
  9. leetcode 435. 无重叠区间
  10. 由衷的信来激励有抱负的开发人员