gerrit(1) | gerrit 简介

gerrit(1) | gerrit 简介

1. 目的

之前用过 gitlab CI/CD, github actions, 以及公司的配置管理员配置的 jenkins。

github 的 MR, github 的 PR, 虽然在用, 但仅限于参与开源项目或公司内的开源项目, OEM 项目中完全没在用。

gerrit 应该是比较强大的 code review 系统, 基于 git 的, 这里简单了解下。

2. gerrit 的历史

https://www.gerritcodereview.com/about.html

Google Mondrian

谷歌开发了 Mondrian, 它是基于 Perforce 的 code review 工具, 是在代码提交到中心仓库之前做 peer-review。

Mondrian 不开源, 并且绑定到了很多是谷歌特有的服务, 比如 BigTable。 谷歌员工每天都在用 Mondrian, 并且觉得很好用。

Rietveld

Guido van Rossum在Rietveld中开源了Mondrian的部分内容,Rietveld是一个类似的代码审查工具,运行在Google App Engine上,但是用于Subversion而不是Perforce。Rietveld被许多开源项目广泛使用,类似于Mondrian为Google员工提供的同行审查。与Mondrian和Google Perforce触发器不同,Rietveld严格来说是一个咨询性工具,不会强制要求在提交之前进行同行审查。

Gitosis and Gitolite

Git是一种分布式版本控制系统,其中每个存储库都被假定为由单个用户拥有/维护。Git中没有内置的安全控制,因此从存储库读取或写入的能力完全受主机文件系统访问控制的控制。当多个维护者在单个共享存储库上进行协作时,需要高度的信任,因为任何具有写入访问权限的协作者都可以更改存储库。

Gitosis和Gitolite提供了工具来保护集中式Git仓库,允许多个维护者同时管理同一个项目,通过限制只能通过安全网络协议访问,就像Perforce通过只允许通过其网络端口访问来保护仓库一样。

Android

Android开源项目(AOSP)是由谷歌通过开源发布Android操作系统而成立的。AOSP选择Git作为其主要版本控制工具。由于许多工程师在谷歌有使用Mondrian的经验,因此他们强烈希望Git和AOSP能拥有相同(或更好)的功能集。

The Rietveld fork

Gerrit Code Review最初是对Rietveld的一组简单补丁,最初是为了服务AOSP而构建的。由于Rietveld是AppEngine平台的技术演示,并且访问控制功能会使Rietveld代码库变得复杂,因此很快就变成了一个分支。随着功能和代码开始变得截然不同,需要一个不同的名称。Gerrit回溯到Rietveld的原始名字Gerrit Rietveld,他是一位荷兰建筑师。

Gerrit 2.x rewrite

Gerrit 2.x 是 Gerrit 分支的完全重写,将实现方式从 Python on Google App Engine 改为 Java on a J2EE servlet 容器和 SQL 数据库。

Gerrit 3.x rewrite

自 Gerrit 3.x 开始,NoteDb 取代了 SQL 数据库,现在所有的元数据都存储在 Git 中。用户界面也从 GWT 迁移到了 Polymer。

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

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

相关文章

【JavaScript + CSS】随机生成十六进制颜色

效果图 实现 <template><div class"year_area"><div class"year_list"><el-row :span"24"><div :class"showAll"><el-col :span"5" v-for"(item, index) in defaulList" :key&…

Shell脚本是一种用来自动化执行一系列命令的文本文件

Shell脚本是一种用来自动化执行一系列命令的文本文件。它可以包含一系列的Shell命令和控制结构,用于实现特定的功能或任务。 以下是一些使用Shell脚本的常见情况: 自动化任务:可以使用Shell脚本编写自动化任务,例如备份文件、定时执行命令等。 系统管理:通过Shell脚本可以…

电动汽车充放电V2G模型(matlab代码)

目录 1 主要内容 1.1 模型背景 1.2 目标函数 1.3 约束条件 2 部分代码 3 效果图 4 下载链接 1 主要内容 本程序主要建立电动汽车充放电V2G模型&#xff0c;采用粒子群算法&#xff0c;在保证电动汽车用户出行需求的前提下&#xff0c;为了使工作区域电动汽车尽可能多的消…

迁移学习实现图片分类任务

导入工具包 import time import osimport numpy as np from tqdm import tqdmimport torch import torchvision import torch.nn as nn import torch.nn.functional as Fimport matplotlib.pyplot as plt %matplotlib inline# 忽略烦人的红色提示 import warnings warnings.fi…

okhttp 的 拦截器

拦截器有很多作用&#xff0c;实现就是责任链模式&#xff0c;细节&#xff0c;等我有时间补上。 后面有时间更新一下。 OkHttp最核心的工作是在 getResponseWithInterceptorChain() 中进行&#xff0c;在进入这个方法分析之前&#xff0c;我们先来了 解什么是责任链模式&…

【PHP源码】2.0熊猫乐园签到,任务,玩游戏一键完成源代码

每天都要签到啥的,麻烦的很,而且有时候可能忘记,干脆封装成写出php代码,宝塔新定时任务,每天00:00自动运行✅,妥妥省心~ 2.0更新 🎉首页.竹子浇水 🎉首页.竹子种植 🎉首页.竹子收获 🎉首页.水滴领取 🎉餐厅.自动工作 🎉任务.分享完成 <?php $user…

Java split 分割字符串避坑

使用split进行字符串分割时需要注意2点 1、特殊字符作为分隔符时需要使用\\进行转义(如\\ -> \\\\; | -> \\| ) 特殊字符 .$|()[{^?*\\ 例如对"|"分隔 未转义 String str "01|02|03"; String[] strArr str.split("|");System.out.…

2.3学习总结

2.3 1..买卖股票的最佳时机 2..买卖股票的最佳时机II 3.最长递增子序列 4.最长连续递增的子序列 5.最长重复子数组 6.最长公共子序列 https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/description/ 定义&#xff1a;dp[i][0] 表示第i天持有股票所得现⾦。dp[…

点击按钮打开自定义iframe弹窗

1、效果 点击按钮打开弹窗&#xff1a; 打开弹窗后&#xff1a; 2、代码 <!DOCTYPE html> <html><head><title>iframe弹窗</title><style>/* 使用媒体查询来实现响应式设计 */media (min-width: 768px) {.popup {width: 80%; /* 设置…

【c/python】GtkBox

一、GtkBox及C语言示例 GtkBox是一个容器部件&#xff0c;用于在GTK&#xff08;GIMP Toolkit&#xff09;应用程序中水平或垂直地排列多个子部件。以下是一个简单的例子&#xff0c;展示了如何在一个基本的GTK应用程序中使用GtkBox来垂直排列两个按钮&#xff1a; 首先&#…

用Python Tkinter打造的精彩连连看小游戏【附源码】

文章目录 连连看小游戏&#xff1a;用Python Tkinter打造的精彩游戏体验游戏简介技术背景MainWindow类:职责:方法:Point类: 主执行部分:完整代码&#xff1a;总结&#xff1a; 连连看小游戏&#xff1a;用Python Tkinter打造的精彩游戏体验 在丰富多彩的游戏世界中&#xff0c…

左旋字符串的三种方法,并判断一个字符串是否为另外一个字符串旋转之后的字符串。(strcpy,strncat,strcmp,strstr函数的介绍)

一. 实现一个函数&#xff0c;可以左旋字符串中的k个字符。 例如&#xff1a; ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB 通过分析&#xff0c;可以知道实际的旋转次数&#xff0c;其实是k%&#xff08;字符串长度&#xff09;。假设一个字…

ansible批量修改主机密码

在修改密码之前呢&#xff0c;请先明白一件事情 password 字段需要使用加密的密码&#xff0c;而不是明文密码 如果直接用剧本批量写入密码&#xff0c;会因为 密码哈希算法不匹配 导致登陆不成功 可以使用 Python 的 passlib 库来生成 SHA-512 加密的密码。&#xff08;根据使…

服务器入门

入门服务器管理涉及到一系列基础概念和技能&#xff0c;这包括操作系统、网络配置、安全性、远程访问等。以下是一些建议&#xff0c;可以帮助你开始学习服务器管理&#xff1a; ### 1. **选择合适的操作系统&#xff1a;** - 大多数服务器使用 Linux 操作系统&#xff0c;…

头歌C++语言之数学运算练习题(二)

目录 第1关:求商 任务描述 相关知识 算数运算符 编程要求 第2关:坐标与象限 任务描述 相关知识 if语句 if-else语句 编程要求 第3关:完全平方数 任务描述 编程要求 第4关:弹球的高度计算 任

java的版本分类--更新中

还需要对java的各版本以及springboot进行讨论论证。确定Java的版本使用选择要点与使用场景 一、Java的4个“儿子” 在了解什么是JavaEE之前&#xff0c;我们初学者有必要知道&#xff0c;JavaEE其实是一个平台&#xff0c;隶属Java开发语言的下肢&#xff0c;用最通俗的话说&…

西瓜书学习笔记——流形学习(公式推导+举例应用)

文章目录 等度量映射&#xff08;仅保留点与其邻近点的距离&#xff09;算法介绍实验分析 局部线性嵌入&#xff08;不仅保留点与其邻近点的距离还要保留邻近关系&#xff09;算法介绍实验分析 等度量映射&#xff08;仅保留点与其邻近点的距离&#xff09; 算法介绍 等度量映…

设计模式——七大原则

​更多内容&#xff0c;前往 IT-BLOG ​设计模式的目的是为了让程序&#xff0c;具有更好的代码重用性、可读性&#xff08;编程规范性&#xff0c;便于后期维护和理解&#xff09;、可扩展性&#xff08;当需要增加新需求时&#xff0c;非常方便&#xff09;、可靠性&#xf…

树莓派5一键安装C++版本OpenCV

安装环境 本人当前的安装环境&#xff1a; 树莓派5Raspberry Pi os (64-bit) Debian12 Bookworm 镜像下载地址 我这里是将镜像安装好后直接安装opencv&#xff0c;如果不是刚安装好的镜像需要注意是否有openCV的python之类的安装过&#xff0c;不然可能出现编译错误 一、扩展内…

SpringBoot中数据库的连接及Mybatis的配置和使用

目录 1 在pom.xml中引入相关依赖 2 对数据库进行配置 2.1 配置application.yml 2.2 idea连接数据库 (3.2.1有用到) 3 Mybatis的使用 3.1 测试文件的引入 3.2 使用 3.2.1 使用注解(有小技巧(✪ω✪)) 3.2.2 使用动态sql 1 在pom.xml中引入相关依赖 <dependencies&g…