Gerrit使用篇-提交代码,合并代码

前言

在使用gerrit之前,必须对git有一定的熟悉,
Gerrit安装篇介绍了怎么安装Gerrit,这篇会简单介绍下Gerrit如何使用,下面这张图是Gerrit的生命周期
Gerrit使用篇-提交代码,合并代码_第1张图片

下面做个比较:
下图是一个普通的git
Gerrit使用篇-提交代码,合并代码_第2张图片

下图是gerrit
Gerrit使用篇-提交代码,合并代码_第3张图片

仔细比较:gerrit多了一个”PendingChange”,这部分是做Code Review的,然后管理员verify之后,PendingChange代码就会合并到Git仓库了。

1.完整配置

点击Settings,选择Contact Informations,点击右边的Register New Email,如下图我注册了一个通知邮件
Gerrit使用篇-提交代码,合并代码_第4张图片
这样有状态变化或者需要审核代码,就会接收到通知。

点击左边的”SSH Public Keys”,添加需要key,如何获取这个key,可以通过以下方式:

1) 如果不存在~/.ssh/id_rsa.pub文件,则通过下面命令生成
Gerrit使用篇-提交代码,合并代码_第5张图片

2)通过下面命令获取key
cat ~/.ssh/id_rsa.pub
这里写图片描述

然后把这个key复制,像下面一样:
Gerrit使用篇-提交代码,合并代码_第6张图片

点击“add”按钮,添加成功

2.创建project

需要登录管理员账号(第一个登录的账号就是管理员账号,当然你也可以使用管理员账号设置其他账号为管理员),点击Projects,选择最后一个菜单 “Create New Project”,如下图

Gerrit使用篇-提交代码,合并代码_第7张图片

一般情况创建的新工程都会继承与”All-Projects”,如下图:
Gerrit使用篇-提交代码,合并代码_第8张图片

点击”Create Project”按钮,创建成功之后,就可以在Projects的List列表看到了,如下图:

Gerrit使用篇-提交代码,合并代码_第9张图片

3.提交代码

点击我们上面创建的HelloGerrit工程,你会看到下面这样的界面:
Gerrit使用篇-提交代码,合并代码_第10张图片

选中”clone with commit-msg hook”和”ssh”,会得到下面这样一个路径:
Gerrit使用篇-提交代码,合并代码_第11张图片

拷贝上面的路径到git-bash里执行
这里写图片描述

我们试下按照正常的使用git的方式commit和push代码,如下:
Gerrit使用篇-提交代码,合并代码_第12张图片
上面错误告诉我们:这个账号没有权限把代码直接提交到git仓库,这就是gerrit的精髓了,关于gerrit是怎么工作的,可以看下前言部分。

接下来,我们就需要配置账号可以提交到”PendingChange”了,

git config remote.origin.push refs/heads/*:refs/for/*

然后我们看下git push之后就怎么样
Gerrit使用篇-提交代码,合并代码_第13张图片

在浏览器打开上面的那个网址“http://192.168.1.3:9080/129”,内容很丰富
Gerrit使用篇-提交代码,合并代码_第14张图片
Gerrit使用篇-提交代码,合并代码_第15张图片

4.审核代码

添加Reviewer
Gerrit使用篇-提交代码,合并代码_第16张图片

添加的Reviewer绑定的邮箱会收一个通知邮件:
Gerrit使用篇-提交代码,合并代码_第17张图片

OK,接下来,审核者打开网页,阅读代码,比如其中的一个类文件
Gerrit使用篇-提交代码,合并代码_第18张图片
接下来审核者有两种选择

1)如果发现代码有问题或者不符合规范,他可以点击”Abandon Change”
Gerrit使用篇-提交代码,合并代码_第19张图片

这样,提交代码的人会收到一个邮件通知
Gerrit使用篇-提交代码,合并代码_第20张图片

因为在提交者的git log,这个被拒绝的提交仍然存在,所以需要去除这个提交的log,通过重置到上一个提交就可以了

git reset c7ad7f432ead7289685df6a4fd53cf0c2dd63c91

然后重新提交就可以了。

2)审核通过
审核者,点击“Review”,出现下面选择
Gerrit使用篇-提交代码,合并代码_第21张图片

需要注意:每个提交只有满足了”+2”和”verified”才能submit合并到master分支。

我们注意到了这里没有 显示“verified”,所以我们需要去开启这个功能,
因为“HelloGerrit”的权限集成自“AllProjects”,所以对“AllProject”的Access进行修改
Gerrit使用篇-提交代码,合并代码_第22张图片
因为我们正在修改的是refs/heads/*,所以滑动到这个位置,添加相应权限,比如我已经添加好的
Gerrit使用篇-提交代码,合并代码_第23张图片

接下来看下,回到之前的地方,点击“review”按钮,如下图
Gerrit使用篇-提交代码,合并代码_第24张图片

需要注意几点:
1)合并代码需要Code-Review的”+2”和Verified的”+1”才能使用合并功能
2)CodeReview的所有选项和Verified的所有选项可以根据团队配置来分配,也可以都由一个人来做。一般情况:CodeReview的+1/-1对应初级审核,+2/-2对应更上一级审核;Verified就是合并之前的确认的。

这里,我自己选择CodeReview的”+2”和Verfied的“+1”,然后点击“Submit Patch set 1”成功了,可以看到代码已经合并了
Gerrit使用篇-提交代码,合并代码_第25张图片
接下来就可以团队其他成员就可以用git pull拉取代码

5.gerrit可以当做普通的git使用

其实Gerrit也可以像普通的git一样使用,只不过我们需要先修改一些权限, 还是像上面一样打开权限列表,见下图:
Gerrit使用篇-提交代码,合并代码_第26张图片
我们给“Administrators”分组添加了直接push的权限,这个分组下面的所有成员都可以像git一样使用gerrit,如果之前使用下面的命令修改了git push

git config remote.origin.push refs/heads/*:refs/for/*

在把gerrit当成普通git使用之前,需要做如下修改

git config remote.origin.push master

如下图是修改之后像普通的git一样提交代码:
Gerrit使用篇-提交代码,合并代码_第27张图片

总结

不知道安装gerrit,可以看下我之前写的Gerrit安装篇,以后有时间会根据实际项目使用,来继续补充gerrit使用。你也可以链接到下面三个地方深入学习gerrit

1)using gerrit
2)gerrit-review
3)gerrit tutorial

你可能感兴趣的:(第三方集成,代码托管,git,代码优化,CodeReview)