zoukankan      html  css  js  c++  java
  • Git Review + Gerrit 安装及使用完成 Code-Review

    转载自:https://cloud.tencent.com/developer/article/1010615

    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 安装

    sudo yum install git-review
    sudo apt-get install git-review
    

    Mac OS X 上 pip | Homebrew 安装

    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 服务。

    $ 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 登录的用户,默认为管理员。

    img

    6.2 上传公钥

    为了方便以后操作,这里我们使用 ssh 方式连接。Gerrit 配置 ssh key 也很简单。 登录系统后,点击右上角用户名 -> Settings -> SSH Public Keys -> Add Key,把自己本地的公钥复制到文本域里,点击 Add 即可。本地生成 SSH Key如下:

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

    img

    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。

    第一种:
    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 操作

    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 示例操作

    $ 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,实际应用中,可以事先指定好各审核人。)

    $ 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。
    

    img

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

    参考资料

  • 相关阅读:
    转------深入理解--Java按值传递和按引用传递
    排序算法 -------未完待续
    eclipse智能提示报错(to avoid the message, disable the...)
    关于hashcode 和 equals 的内容总结
    随笔 软件设计师 -----------考后总结
    wpf 中用 C# 代码创建 PropertyPath ,以对间接目标进行 Storyboard 动画.
    AvaloniaUI体验
    wpf 通过为DataGrid所绑定的数据源类型的属性设置Attribute改变DataGrid自动生成列的顺序
    wpf 在不同DPI下如何在DrawingVisual中画出清晰的图形
    基于libcurl实现REST风格http/https的get和post
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/13724734.html
Copyright © 2011-2022 走看看