前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Git Review + Gerrit 安装及使用完成 Code-Review

Git Review + Gerrit 安装及使用完成 Code-Review

作者头像
哎_小羊
发布2018-01-02 14:54:58
8.3K0
发布2018-01-02 14:54:58
举报
文章被收录于专栏:哎_小羊

目录

  • Code Review 介绍
  • Gerrit 介绍
  • 环境、软件准备
  • Git-Review 安装
  • Gerrit 安装
  • 简单的 Demo 示例

1、Code Review 介绍

Code Review 代码评审是指在软件开发过程中,对源代码的系统性检查。Code Review 是一种用来确认方案设计和代码实现的质量保证机制,通过这个机制我们可以对代码,测试过程和注释进行检查。Code Review 主要用来在软件工程过程中改进代码质量,查找系统缺陷,保证软件总体质量和提高开发者自身水平。

2、Gerrit 介绍

Gerrit 是一个免费、开放源代码的代码审查软件。利用网页浏览器,同一个团队的软件程序员,可以相互审阅彼此修改后的程序代码,决定是否能够提交,退回或者继续修改。Gerrit 是使用 Git 作为底层版本控制系统,通过网页界面,能方便的做代码审核工作的一个轻量型框架,出自google团队的开源项目。

这里我们要实现的是,本地 Git 提交代码 review 到 Gerrit,在 Gerrit 上做 Code Review,如果 commit 通过则直接 merge 到分支,不通过则再修改并 update patch set 或者直接 abandon 掉。

3、环境、软件准备

本次演示环境,我是在本地机器 Mac 上操作,以下是安装的软件及版本:

  1. Docker:version 17.03.1-ce
  2. Git:version 2.10.1
  3. Gerrit:version 2.13.5
  4. Git-Review:version 1.25.0

注意:Gerrit 这里我使用基于 Docker 安装,所以需要先安装一下 Docker,后边演示 Git-Review 操作,需要本地先安装 Git,这里 Git、Docker 的安装忽略。

4、 Git-Review 安装

git-review 安装方式很简单,针对不同的系统,安装方式也不同。

Linux系统上 yum | apt-get 安装

代码语言:javascript
复制
sudo yum install git-review
sudo apt-get install git-review

Mac OS X 上 pip | Homebrew 安装

代码语言:javascript
复制
1、pip安装方式
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
$ python get-pip.py
$ sudo pip install git-review

2、Homebrew 安装
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
$ sudo brew install git-review 

安装完毕后,可以通过 git review --help 查看 review 命令相关信息。

5、Gerrit 安装

Gerrit 详细的安装过程,可参考我之前的文章 记录Gerrit2.8.4环境迁移、安装、配置以及问题解决 写的比较详细。这里我在本地使用 docker 快速搭建一个简单的 gerrit 服务。

代码语言:javascript
复制
$ docker pull openfrontier/gerrit
$ docker run --name gerrit -p 9000:8080 -p 29418:29418 -v /Users/wanyang3/gerrit/review_site:/var/gerrit/review_site openfrontier/gerrit

启动完成后,本地访问 http://127.0.0.1:9000/ 即可访问 Gerrit 网页版。

6、简单的 Demo 示例

6.1 注册登录

默认 Gerrit 登录,需要点击页面右上角 “Become in”, 然后注册账号。 如果 Gerrit 配置 LDAP 登录,则需要在修改配置文件 /Users/wanyang3/gerrit/review_site/etc/gerrit.conf,配置上 LDAP 相关信息,然后点击页面右上角 “Sign In”,输入用户名、密码即可登录,系统自动将用户信息入库。

注意:第一个注册的帐号或者 LDAP 登录的用户,默认为管理员。

6.2 上传公钥

为了方便以后操作,这里我们使用 ssh 方式连接。Gerrit 配置 ssh key 也很简单。

登录系统后,点击右上角用户名 -> Settings -> SSH Public Keys -> Add Key,把自己本地的公钥复制到文本域里,点击 Add 即可。本地生成 SSH Key如下:

代码语言:javascript
复制
$ ssh-keygen –t rsa 
$ cat ~/.ssh/id_rsa.pub #内容复制到上边文本域中。

6.3 创建项目

下边我们开始创建一个demo项目,项目名为 review_demo,点击 Projects -> Create New Project -> 输入 Project Name -> 点击 Create Project。

6.4 Clone 项目

clone 远程项目到本地,这里 clone 有两种,第一种只 clone 项目,第二种 clone 项目的同时,复制 gerrit 提供的 commit-msg 钩子脚本,它的作用是在每次新的提交时生成 change-id。

代码语言:javascript
复制
第一种:
git clone ssh://wanyang3@127.0.0.1:29418/review_demo
第二种:
git clone ssh://wanyang3@127.0.0.1:29418/review_demo && scp -p -P 29418 wanyang3@127.0.0.1:hooks/commit-msg review_demo/.git/hooks/

6.5 git review 操作

代码语言:javascript
复制
cd review_demo
git remote add gerrit ssh://wanyang3@127.0.0.1:29418/review_demo 
#这里因为 git-review 在使用 gerrit 时会默认查找名为 gerrit 的 remote,
如果 remote 存在,则 git-review 将提交当前分支到 remote 的 HEAD:refs/for/master
如果 remote 不存在,则 git-review 会查找 .gitreview 文件,所以我们需要创建一个 .gitreview 文件。

vim .gitreview

[gerrit]
host=127.0.0.1
port=29418 
project=review_demo 
defaultbranch=develop #这里指向了 develop 分支。

接下来正常执行 git 操作,但是 commit 完成后,不需要 push,只需要执行:
git review #会自动推送到我们的 gerrit 服务器上
然后相关负责人去 gerrit 上做 Code review,如果审核通过,则 Merge 到分支,若未通过,则可直接 Abandon 掉或者 Code-Review -2打回。

注意:当我们提交的commit审核未通过时,我们再修改完成之后,执行:
git add .
git commit --amend #注意这里会保留上次的 change-id,gerrit 将不会生成新的评审任务编号,使用原有任务编号,并将本次提交作为老评审任务的补丁。
git review

6.6 示例操作

代码语言:javascript
复制
$ vim test.txt
$ git add .
$ git commit -m "add test.txt"
[develop 636e853] add test.txt
 1 file changed, 1 insertion(+), 2 deletions(-)
$ git review
remote: Processing changes: new: 1, refs: 1, done
remote:
remote: New Changes:                              ###6.6.1 新的 change
remote:   http://127.0.0.1:9000/11 add test.txt   ###6.6.1 序号11
remote:
To ssh://127.0.0.1:29418/review_demo
 * [new branch]      HEAD -> refs/publish/develop

此时,本次 commit 已经提交到 gerrit 上,并生成好了change-id,等待审核 Code-Review。这里演示先 Code-Review -1,然后 Code-Review -2,相当于本次提交不通过。接下来,我们在做一下修改,再次提交(注意:这里我们要使用上一次提交的 change-id,意思是再次提交作为上一次的修改补丁),最后 Code-Review +1,Code-Review +2 审核通过本次提交,真正合并到分支上。(以上都是用我一个人的账号进行 Code-Review,实际应用中,可以事先指定好各审核人。)

代码语言:javascript
复制
$ vim test.txt
$ cat test.txt
This is test message for review_demo.
I have modify the bug, please let me pass.
$ git add .
$ git commit --amend
[develop b0e8fc1] add test.txt
 Date: Mon Aug 14 10:19:54 2017 +0800
 1 file changed, 2 insertions(+), 2 deletions(-)
$ git review
remote: Processing changes: updated: 1, refs: 1, done
remote:
remote: Updated Changes:                          ###6.6.2 更新 change
remote:   http://127.0.0.1:9000/11 add test.txt   ###6.6.2 序号11
remote:
To ssh://127.0.0.1:29418/review_demo
 * [new branch]      HEAD -> refs/publish/develop

#从打印的日志信息中6.6.1和6.6.2就可以看出来,本次 commit 是针对上一次提交的 update,使用的是同一个 change-id。

至此,针对本次的修改才被真正 merge 到分支上了。当然 gerrit 能做的还有很多,如权限控制,分组等等,这里只介绍了最简单的也是最核心的 Code-Review 功能的简单使用。

参考资料

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-08-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档