环境:

Gerrit Server:172.16.206.133

Client:172.16.206.129

1、在Gerrit服务器上创建用户

Gerrit服务器使用的是HTTP认证类型,并用httpd做反向代理,创建用户使用以下命令

#cd  /home/gerrit2/gerrit/etc

[root@localhost etc]# htpasswd -m passwords user2

New password:

Re-type new password:

Adding password for user user2

根据提示输入密码即可(密码设置为123456),这样账号就创建好了。创建完成,httpd和gerrit服务不需要重启。

2、登录gerrit用户

用创建的user2账号访问gerrit,在浏览器地址栏输入:

http://172.16.206.133:8080

输入登录的账号密码,账号为user2,密码为123456

3、修改gerrit用户配置

登录后,在网页右上角点击自己的用户名,在点击“settings”。

settings中就是用户的配置相关信息,需要注册邮箱和提交服务器上的公钥

1、提交公钥

注意:为什么要提交公钥文件到gerrit服务器?如果不提交公钥,则不能使用git push命令将本地代码提交到gerrit服务器。公钥是一个认证方式。

在客户端172.16.206.129这台服务器上创建公、私钥对,具体命令如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[user2@host2 root]$ ssh-keygen -t rsa 
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user2/.ssh/id_rsa): 
Created directory '/home/user2/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/user2/.ssh/id_rsa.
Your public key has been saved in /home/user2/.ssh/id_rsa.pub.
The key fingerprint is:
fd:da:fa:c5:ec:6c:82:60:1f:39:15:bc:62:ec:51:15 user2@host2
The key's randomart image is:
+--[ RSA 2048]----+
|           . .E. |
|            +    |
|         . . o   |
|         .= o    |
|        So.=     |
|        o =. o   |
|       . o +. +  |
|          oo.+.  |
|          ooooo  |
+-----------------+

生成的密钥文件如下:

[user2@host2 ~]$ ls .ssh/

id_rsa  id_rsa.pub

id_rsa.pub为公钥文件,将该文件中的内容,复制并粘贴到settings==>SSH Public Keys中,并点击Add

测试SSH key是否提交成功,在client 172.16.206.129服务器上执行以下命令:

#ssh -p 29418  user2@172.16.206.133

29418为gerrit上SSH服务器监听的端口,user2为登录的gerrit账号,注意这里我们使用哪个账号登录gerrit就使用哪个账号测试,并且该账号已经登录了gerrit服务器,而且公钥已经上传。172.16.206.133为gerrit服务器的IP

1
2
3
4
5
6
7
8
9
10
11
[user2@host2 .ssh]$ ssh -p 29418 user2@172.16.206.133
The authenticity of host '[172.16.206.133]:29418 ([172.16.206.133]:29418)' can't be established.
RSA key fingerprint is 93:d3:47:c2:15:32:f0:41:d9:e6:7f:88:66:01:f3:9b.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[172.16.206.133]:29418' (RSA) to the list of known hosts.
  ****    Welcome to Gerrit Code Review    ****
  Hi user2, you have successfully connected over SSH.
  Unfortunately, interactive shells are disabled.
  To clone a hosted Git repository, use:
  git clone ssh://user2@172.16.206.133:29418/REPOSITORY_NAME.git
Connection to 172.16.206.133 closed.

可以看到连接成功,说明SSH Public Key上传成功。

为user2注册邮箱

点击Register后,登录你刚才注册的邮箱,激活即可。

4、创建用户组并创建一个项目

注意,只有管理员组的用户才能创建group和Project

登录Gerrit管理员账号admin,创建一个新的组为group2。并将user2账号加入该组

新建一个Project,名为Project2

5、gerrit代码审核流程

前面都是准备工作,接下来演示gerrit如何做代码审核的

a、client server( 172.16.206.129)的git初始配置

配置用户名和邮箱

#git config --global user.name "user2"

#git config --global user.email "YOUR EMAIL-ADDRESS"

b、用账户user2登录gerrit

在Projects==> List中找到Projects2,然后点击Clone with commit-msg hook, 在点击ssh按钮,

复制ssh下面项目地址:

1
git clone ssh://user2@172.16.206.133:29418/Project2 && scp -p -P 29418 user2@172.16.206.133:hooks/commit-msg Project2/.git/hooks/

直接将刚才复制的命令,在client server的命令行运行

1
git clone ssh://user2@172.16.206.133:29418/Project2 && scp -p -P 29418 user2@172.16.206.133:hooks/commit-msg Project2/.git/hooks/

注意:步骤b一定选Clone with commit-msg hook下面的地址来clone,否则在客户端使用git push

命令提交代码时会报错。如果不需要向gerrit服务器提交代码,那么你只需使用

git clone ssh://user2@172.16.206.133:29418/Project2

或者git clone http://user2@172.16.206.133:8081/a/Project2

c、创建一个文件,并提交到gerrit服务器端

1
2
3
4
[user2@host2 Project2]$ vim test.sh 
aaaaaaaaaaaaa
bbbbbbbbbbbbb
ccccccccccccc

用git add 和git commit命令将文件保存到git仓库中

1
2
3
4
5
[user2@host2 Project2]$ git add test.sh 
[user2@host2 Project2]$ git commit -m "创建了test.sh文件"
[master 16462e9] 创建了test.sh文件
 1 files changed, 3 insertions(+), 0 deletions(-)
 create mode 100644 test.sh

d、用git push命令将代码从本地传到gerrit服务器对象项目下的master分支

1
2
3
4
5
6
7
8
9
10
11
12
[user2@host2 Project2]$ git push origin master:refs/for/master
Counting objects: 4, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 341 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: Processing changes: new: 1, refs: 1, done    
remote: 
remote: New Changes:
remote:   http://172.16.206.133:8081/5 创建了test.sh文件
remote: 
To ssh://admin@172.16.206.133:29418/Project2
 * [new branch]      master -> refs/for/master

origin:远程仓库的名称,用git remote 可以查看所有的远程仓库名称

1
2
[user2@host2 Project2]$ git remote 
origin
1
master:refs/for/master 表示将代码从本地的master分支传到远端的master分支,固定格式就是这样

e、用user2账号登录Gerrit Web UI,邀请管理员admin来做code review。

注意:之前忘记截图了,所以下图不是原图,但是基本上都一样,只有Owner和Project不对而已。

Add:添加指定用户来进行Code Review

Cherry Pick:切换分支,当执行push操作之后如果发现分支不对,需要切换,可以在这里点击Cherry Pick按钮进行分支切换操作。

Abandon:撤销push操作,当push之后,如果发现代码有问题,需要修改,可以点击这个按钮,然后修改代码,修改完成后,再次push,然后登陆Gerrit Web UI,会有一个Restore按钮,这时候点击Restore,就可以重新申请Code Review。

Rebase和Follow-Up没有找到相关资料

e、看看Gerrit服务器上是否有code review的信息

登录gerrit管理员账号admin,在ALL下面点击“Open”,看到“创建了test.sh”这条记录。

这里“创建了test.sh文件”就是git commit -m "创建了test.sh文件" 这条命令产生的

点开这条记录,看到以下信息

我们可以点开test.sh文件看到里面的内容

还可以看到提交者的信息:

这里显示的用户名和邮箱地址其实是在client server上初始化git时,用以下命令配置的

#git config --global user.name "user2"

#git config --global user.email "YOUR EMAIL-ADDRESS"

点击上上图中的code review和replay进行代码审核

-2 表示不通过,+2表示代码ok可以通过审核,目前还没有深究这个,我理解的就是这样子的。

审核后可以看到审核的日志

以上就是gerrit代码审核的流程,gerrit仓库是纯粹的代码仓库,不存在work tree这个说法。所以在gerrit仓库里面执行git命令都会报错:

1
2
[root@localhost Project2.git]# git status
fatal: This operation must be run in a work tree

但是,如果用git clone将gerrit仓库里面的项目clone下来后,就自动变成了一个git仓库。

Gerrit配置--用户配置的更多相关文章

  1. TestDirector自定义管理:用户配置

    一.进入Customize 1.打开TD,点击TestDirector,进入登录界面,在TD登录页面右上角点击“CUSTOMIZE(自定义)”. 2.选择要登录的域和项目,输入用户帐号和密码,点击确定 ...

  2. gerrit系统如何配置访问控制

    . 版本:v0.3 作者:河东西望 日期:2022-7-13 . 目录 1 关键概念 2 需求场景 3 配置策略 gerrit系统的上手使用有两个难点: 部署repo仓库. 配置访问控制. 想要上手使 ...

  3. 烂泥:Postfix邮件服务器搭建之虚拟用户配置

    virtual_gid_maps = static: virtual_transport = dovecot dovecot_destination_recipient_limit = 1 注意:po ...

  4. Windows Server 2008 R2组策略设置计算机配置和用户配置

    一.认识Windows Server 2008 R2域控组策略管理 1.域控服务器zhuyu.com的组策略管理默认会读取AD用户和计算机目录下创建的OU容器(组织单元), 在对应的OU容器创建对应的 ...

  5. 【HOW】用PowerShell脚本修改用户配置文件属性显示次序

    首先将如下脚本保存为PowerShell文件,如:ReorderUserProfileProperty.ps1. 在执行此脚本时,如果不输入任何参数,将列出所有用户配置文件属性的名称和显示次序:如果只 ...

  6. 【HOW】如何允许编辑用户配置文件属性

    在自定义用户配置文件属性后会发现,通过属性本身的配置页面,只能允许用户修改自己的属性,而管理员无法修改其他用户的属性.若要允许管理员在用户信息页面修改用户配置文件属性,可通过如下操作实现: 1. 进入 ...

  7. Jenkins用户配置(安装好jenkins后,怎么配置用户管理、权限管理)

    直奔主题 安装完成后,先开启用户配置 1. 系统管理-->配置权限 2.  启用安全,并选中"安全矩阵" 如上,搞定: 可以按用户去设置各项目的操作权限了: 轻松实现,jen ...

  8. Linux用户配置sudo权限

    Linux用户配置sudo权限 创建sudo权限用户 #useradd supope #passwd supope #visudo #supope         ALL=(ALL)       AL ...

  9. LTE Module User Documentation(翻译11)——配置用户测量

    LTE用户文档 (如有不当的地方,欢迎指正!) 17 Configure UE measurements   仿真中激活的用户测量配置取决于所选的 “consumers”,例如切换算法.用户可能需要添 ...

随机推荐

  1. 动手实操(一):如何用七牛云 API 实现相片地图?

    实操玩家: 在苹果手机上,我们只要打开定位服务,拍照后便能在相簿中找到地图,地图上显示着在各地拍摄的相片.网站上这种显示方式也并不少见,例如 Flickr.即将关闭的 Panoramio 等. 作为地 ...

  2. HDU1711 最基础的kmp算法

    Problem Description Given two sequences of numbers : a[1], a[2], ...... , a[N], and b[1], b[2], .... ...

  3. ORACLE金额转换成英文大写的函数

    用法如下:get_capital_money(Currency, Money) Currency: 货币或货币描述,将放在英文大写的前面: Money:金额.支持两位小数点.如果需要更多的小数点,请自 ...

  4. yum安装LAMP环境与管理

    yum安装LAMP环境与管理 参考:http://www.zixue.it/ yum添加163源 地址: http://mirrors.163.com/.help/centos.html 下载方式: ...

  5. 2017CodeM复赛

    A.配对游戏(loj6191) 题目: https://loj.ac/problem/6191 分析: g[i][j]表示前i个位置尽可能合并,合并到最后右边剩下j个>,这样情况的概率 那么g[ ...

  6. SVN 学习笔记-高级操作

    所谓高级操作,只是曲高和寡,其实都不怎么用的.但是关键时候,可能会很有用. 这个高级只是针对基本操作而言.有些操作可能也是比较基本的. 清除锁 有时候我们在操作的时候,可能系统崩溃了,或者SVN非正常 ...

  7. Eclipse打war包方法以及Eclipse移植项目时JDK版本不匹配Project facet Java version 1.7 is not supported

    打包时: 在项目上右键选择Export,如图: 然后选择WAR file,如图所示.接着再:其中web projecct为打出来包的名字, Destination,打包后存的位置,点击Browse.. ...

  8. 删除,“windows setup 启用EMS”

    方案1[笔者推荐]:进入Windows后按Windows+R输入msconfig回车进入系统配置,切换到引导,点击你要删除的选项然后点击删除就行[1].

  9. HDU 1215.七夕节【筛选法】【7月26】

    七夕节 七夕节那天,月老来到数字王国,他在城门上贴了一张告示,而且和数字王国的人们说:"你们想知道你们的还有一半是谁吗?那就依照告示上的方法去找吧!" 人们纷纷来到告示前,都想知道 ...

  10. C++手稿:std::string

    字符串在非常多编程语言中已经成为基本数据类型,C语言中我们使用char*来手动申请和维护字符串, 在C++中,能够使用std::string来方便地创建和操作字符串. string是一个模板类.它有b ...