1 - 主配置文件

主配置文件位于$GERRIT_SITE/etc/gerrit.config目录

[gerrit@mt101 ~]$ cat gerrit_testsite/etc/gerrit.config
[gerrit]
basePath = git
canonicalWebUrl = http://192.168.16.101:8083/
serverId = 0b911b9e-195a-46b0-a5cd-b407b776b344
[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 = root
javaHome = /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-2.b14.el7.x86_64/jre
[index]
type = lucene
[auth]
type = HTTP
[receive]
enableSignedPush = false
[sendemail]
smtpServer = localhost
[sshd]
listenAddress = *:29418
[httpd]
listenUrl = http://192.168.16.101:8083/
[cache]
directory = cache
[gerrit@mt101 ~]$

2 - Gerrit的用户和群组

Gerrit是基于群组来进行权限控制的,不同的群组具有不同的权限。

每个用户属于一个或者多个群组。

Gerrit系统自带群组

  • Anonymous Users:所有用户自动属于该群组,默认只有Read权限
  • Change Owner:某个提交的拥有者,具备所属变更的权限
  • Project Owners:项目拥有者,具备所属项目的权限
  • Registered Users:所有成功登录的用户自动属于该群组,具备投票权限(CodeReview +1-1)

Gerrit预先定义的群组

  • Administrators:该群组的成员可以管理所有项目和Gerrit的系统配置
  • Non-Interactive Users:该群组的成员可以通过Gerrit界面进行操作,一般用于和第三方系统集成

3 - 进程和服务控制

[gerrit@mt101 ~]$ ll gerrit_testsite/bin/gerrit.sh
-rwxr-xr-x 1 root root 16109 Dec 10 14:43 gerrit_testsite/bin/gerrit.sh
[gerrit@mt101 ~]$
[gerrit@mt101 ~]$ $GERRIT_SITE/bin/gerrit.sh
Usage: gerrit.sh {start|stop|restart|check|status|run|supervise|threads} [-d site]
[gerrit@mt101 ~]$

4 - 查看日志

日志所在目录:$GERRIT_SITE/logs/

[gerrit@mt101 logs]$ pwd
/home/gerrit/gerrit_testsite/logs
[gerrit@mt101 logs]$ ll
total 28
-rw-r--r-- 1 root root 3052 Dec 10 15:12 error_log
-rw-r--r-- 1 root root 0 Dec 10 14:44 gc_log
-rw-r--r-- 1 root root 5 Dec 10 14:43 gerrit.pid
-rw-r--r-- 1 root root 16 Dec 10 14:44 gerrit.run
-rw-r--r-- 1 root root 13067 Dec 10 15:12 httpd_log
-rw-r--r-- 1 root root 0 Dec 10 14:44 sshd_log
[gerrit@mt101 logs]$

5 - war包的命令

war包在命令行下用很多可用命令。

[gerrit@mt101 ~]$ ll
total 67556
-rw-r--r-- 1 gerrit gerrit 69172528 Dec 10 13:04 gerrit-3.1.0.war
-rwxr-xr-x 1 root root 91 Dec 10 14:52 gerrit.password
drwxr-xr-x 14 root root 150 Dec 10 14:44 gerrit_testsite
[gerrit@mt101 ~]$
[gerrit@mt101 ~]$
[gerrit@mt101 ~]$ sudo java -jar gerrit-3.1.0.war
Gerrit Code Review
usage: java -jar gerrit-3.1.0.war command [ARG ...]

The most commonly used commands are:
init Initialize a Gerrit installation
reindex Rebuild the secondary index
daemon Run the Gerrit network daemons
version Display the build version number
passwd Set or change password in secure.config

ls List files available for cat
cat FILE Display a file from the archive

[gerrit@mt101 ~]$
[gerrit@mt101 ~]$ sudo java -jar gerrit-3.1.0.war init -h
init [--batch (-b)] [--delete-caches] [--dev] [--help (-h)] [--install-all-plugins] [--install-plugin VAL] [--list-plugins] [--no-auto-start] [--no-reindex] [--secure-store-lib VAL] [--show-stack-trace] [--site-path (-d) VAL] [--skip-all-downloads] [--skip-download VAL] [--skip-plugins]

--batch (-b) : Batch mode; skip interactive prompting (default:
false)
--delete-caches : Delete all persistent caches without asking (default:
false)
--dev : Setup site with default options suitable for
developers (default: false)
--help (-h) : display this help text (default: true)
--install-all-plugins : Install all plugins from war without asking (default:
false)
--install-plugin VAL : Install given plugin without asking
--list-plugins : List available plugins (default: false)
--no-auto-start : Don't automatically start daemon after init (default:
false)
--no-reindex : Don't automatically reindex any entities (default:
false)
--secure-store-lib VAL : Path to jar providing SecureStore implementation class
--show-stack-trace : display stack trace on failure (default: false)
--site-path (-d) VAL : Local directory containing site data
--skip-all-downloads : Don't download libraries (default: false)
--skip-download VAL : Don't download given library
--skip-plugins : Don't install plugins (default: false)


[gerrit@mt101 ~]$

6 - Gerrit解决冲突的提交

如果不同的开发人员同时修改同一个文件并提交,那么这些提交都不会进入代码库。

Gerrit会在页面显示“Conflicts With”或“Cannot Merge”信息来提示有冲突。

处理方式1:

  • 简单粗暴地直接取消有冲突的提交,在需要修改时重新提交一个。

处理方式2:

  1. 在本地执行git fetch命令更新最新的远端代码
  2. 执行git rebase命令获取具体的冲突信息
  3. 执行git mergetool命令手动解决冲突
  4. 执行git add指令重新添加修改的文件
  5. 执行git rebase -continue命令完成rebase过程
  6. 重新提交

获取命令的用法帮助信息

git fetch -h
git rebase -h
git rmergetool -h
git add -h

7 - 为Gerrit项目创建和删除分支

Gerrit和GitLab集成后,在Gerrit上创建分支,GitLab也会自动同步该分支。

但只能是单项同步(Gerrit--》GitLab),也就是说直接在GitLab上创建的分支不会自动同步到Gerrit上。

建议在Gerrit和GitLab集成后,所有的操作都在Gerrit上完成。

7.1 查看已有分支

7.2 创建新分支



7.3 删除分支

点击要删除分支一行的DETELE按钮,根据提示操作即可。

8 - 为Gerrit项目添加默认代码审核人

一般情况下,每次提交时都需要手工添加Code Reviewer。

通过reviewers插件,可以为指定项目或分支设置默认的Code Reviewer,在有代码提交时,Code Reviewer会接收到代码审核通知邮件。

8.1 找到reviewers插件

在GerritForge(https://gerrit-ci.gerritforge.com/),找到对应gerrit 版本的reviewers插件

reviewers插件:

https://gerrit-ci.gerritforge.com/job/plugin-reviewers-bazel-master/

获得对应的jar下载地址

https://gerrit-ci.gerritforge.com/job/plugin-reviewers-bazel-master/lastSuccessfulBuild/artifact/bazel-bin/plugins/reviewers/reviewers.jar

8.2 放置插件并重启Gerrit服务

将下载的插件(jar包)放置在$GERRIT_SITE/plugins目录下,然后重启Gerrit服务($GERRIT_SITE/bin/gerrit.sh restart),会自动加载此目录下的插件。

[gerrit@mt101 ~]$ cd gerrit_testsite/plugins/
[gerrit@mt101 plugins]$ pwd
/home/gerrit/gerrit_testsite/plugins
[gerrit@mt101 plugins]$ wget https://gerrit-ci.gerritforge.com/job/plugin-reviewers-bazel-master/lastSuccessfulBuild/artifact/bazel-bin/plugins/reviewers/reviewers.jar
--2019-12-11 11:55:16-- https://gerrit-ci.gerritforge.com/job/plugin-reviewers-bazel-master/lastSuccessfulBuild/artifact/bazel-bin/plugins/reviewers/reviewers.jar
Resolving gerrit-ci.gerritforge.com (gerrit-ci.gerritforge.com)... 8.26.94.23
Connecting to gerrit-ci.gerritforge.com (gerrit-ci.gerritforge.com)|8.26.94.23|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 41911 (41K) [application/java-archive]
Saving to: ‘reviewers.jar’

100%[==========================================>] 41,911 118KB/s in 0.3s

2019-12-11 11:55:23 (118 KB/s) - ‘reviewers.jar’ saved [41911/41911]

[gerrit@mt101 plugins]$
[gerrit@mt101 plugins]$ chmod 755 reviewers.jar
[gerrit@mt101 plugins]$ ll
total 44
-rwxr-xr-x 1 gerrit gerrit 41911 Nov 16 02:03 reviewers.jar
[gerrit@mt101 plugins]$
[gerrit@mt101 plugins]$ cd
[gerrit@mt101 ~]$ sudo sh gerrit_testsite/bin/gerrit.sh restart
Stopping Gerrit Code Review: OK
Starting Gerrit Code Review: OK
[gerrit@mt101 ~]$

8.3 查看插件是否安装成功

8.4 配置Reviewers



Filter部分:"*"表示所有分支改动

Reviewer部分:自动提示支持的用户名、邮箱名、群组名



9 - 手动同步GitLab代码到Gerrit

Gerrit和GitLab集成后,在Gerrit上创建分支,GitLab也会自动同步该分支。

但只能是单项同步(Gerrit--》GitLab),也就是说直接在GitLab上创建的分支不会自动同步到Gerrit上。

建议在Gerrit和GitLab集成后,所有的操作都在Gerrit上完成。

如果不小心在GitLab端进行了代码的更新操作,就需要手工执行同步代码的命令。

cd /home/gerrit/gerrit_testsite/git/${project}
git fetch origin +refs/heads/*:refs/heads/* +refs/heads/*:refs/heads/* --prune

10 - 删除Gerrit上的项目

为防止误操作,在Gerrit界面无法直接删除项目。

可以在后台将项目目录删除,然后刷新缓存,才可以完全移除。

[gerrit@mt101 git]$ pwd
/home/gerrit/gerrit_testsite/git
[gerrit@mt101 git]$ ll
total 0
drwxr-xr-x 7 gerrit gerrit 119 Dec 10 14:43 All-Projects.git
drwxr-xr-x 7 gerrit gerrit 119 Dec 11 12:26 All-Users.git
drwxr-xr-x 7 gerrit gerrit 138 Dec 11 12:45 testrepo.git
[gerrit@mt101 git]$
[gerrit@mt101 git]$ rm -rf testrepo.git/
[gerrit@mt101 git]$
[gerrit@mt101 git]$ ssh -p 29418 admin@192.168.16.101 gerrit flush-caches --all
[gerrit@mt101 git]$

刷新页面

Gerrit - 一些基本用法的更多相关文章

  1. Gerrit的用法及与gitlab的区别

    来到一个新的团队,开发的代码被同事覆盖了.找同事核实,同事却说根本没有看到我的代码.经过一番沟通了解,原来他们的代码没有直接在gitlab上操作,而是先提交到gerrit,然后在提交到git.但是代码 ...

  2. Gerrit管理帐号

    文档 Gerrit服务器启动后,网站上有一个Documentation链接.点击后会看到四个选项: index,searching,uploading和access control 文档内容很多,不必 ...

  3. [原创]CI持续集成系统环境--Gitlab+Gerrit+Jenkins完整对接

    近年来,由于开源项目.社区的活跃热度大增,进而引来持续集成(CI)系统的诞生,也越发的听到更多的人在说协同开发.敏捷开发.迭代开发.持续集成和单元测试这些拉风的术语.然而,大都是仅仅听到在说而已,国内 ...

  4. repo的用法

    转自:http://blog.csdn.net/junglyfine/article/details/6299636 注:repo只是google用Python脚本写的调用Git的一个脚本,主要是用来 ...

  5. repo 用法

    repo的用法(zz) 注:repo只是google用Python脚本写的调用git的一个脚本,主要是用来下载.管理Android项目的软件仓库.(也就是说,他是用来管理给git管理的一个个仓库的) ...

  6. CI持续集成系统环境--Gitlab+Gerrit+Jenkins完整对接

    原文地址https://www.cnblogs.com/kevingrace/p/5651447.html 近年来,由于开源项目.社区的活跃热度大增,进而引来持续集成(CI)系统的诞生,也越发的听到更 ...

  7. Gerrit 系统初探 (已转移到 https://steemit.com/gerrit/@linvictor88/gerrit )

    Gerrit 使用简介        Gerrit,一种免费.开放源代码的代码审查软件,使用网页界面.利用网页浏览器,同一个团队的软件程序员,可以相互审阅彼此修改后的程序代码,决定是否能够提交,退回或 ...

  8. 转 gerrit

    开发环境 https://blog.csdn.net/u013207966/article/details/79112740 先记录下我的开发环境以及要正确安装gerrit需要用到的工具: Redha ...

  9. repo的一些用法

    repo的用法注:repo只是google用Python脚本写的调用git的一个脚本,主要是用来下载.管理Android项目的软件仓库.(也就是说,他是用来管理给git管理的一个个仓库的) 1.下载r ...

随机推荐

  1. JavaScrip学习之路

    本文参考资料:<JavaScript权威指南> 第六章:对象 6.1 创建对象 var book={ "main title":"javaScript&quo ...

  2. UNICODE和UCS

    Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案.目前的Unicode字符分为17组编排,0x0000 至 0xFFFF,每组称为平面(Plane),而每平面拥有65536个码 ...

  3. 关于单片机的RAM

    一块RAM 分为了 堆 和 栈   名词而已,知道就可以了, 各种内存溢出问题: 全局数组访问越界 出现的问题:直接重启,或者死机 解决办法 :  额,写好自己的程序吧!!!!!!! 函数的局部变量过 ...

  4. Markdown&Latex学习笔记,qwq

    目录 推荐的文章 居中 字体 加颜色 指数 分数 根号 神奇的符号(不要多想qwq) 箭头 小于号 大括号 累加符号 累乘符号 下标 \(\phi\)&\(\varphi\) \(\equiv ...

  5. .net web.config中配置字符串中特殊字符的处理

    https://www.cnblogs.com/zzmzaizai/archive/2008/01/30/1059191.html 如果本身字符串中有特殊字符,如分号,此时就需要用单引号整体包裹起来, ...

  6. Android Studio 之 数据存活【2】,返回桌面切换回来,内容还保存着

    使用ViewMode SavedState来使得ViewModel在系统杀死后台进程的时候得以存活. 本集使用到的库,需要在gradle中添加: implementation 'androidx.li ...

  7. js逆向分析之acorn和escodegen的使用

    替换之前的d形如 d("77696669") 执行代码 const fs = require('fs'); const acorn = require('acorn'); cons ...

  8. GlusterFS 安装

    一.简介 GlusterFS 是近年兴起的一个高性能开源分布式文件系统,其目标是全局命名空间.分布式前端的高性能文件系统,目前已被 RedHat 看中,GlusterFS 具有高扩展.高可性.高性能. ...

  9. WebSocket专题(阿里)

    我们的项目中使用了websocket 用java-websocket 开源项目做的,阿里的人问我用啥实现的websocket一时没有答上来 回来做了总结: 1.前言 最近有同学问我有没有做过在线咨询功 ...

  10. 【Beta】Scrum meeting 9

    目录 写在前面 进度情况 任务进度表 Beta-1阶段燃尽图 遇到的困难 照片 commit记录截图 文档集合仓库 后端代码仓库 技术博客 写在前面 例会时间:5.13 22:30-22:45 例会地 ...