Gerrit - 快速指南



Gerrit - 概述

Gerrit 是一款基于 Web 的代码审查工具,它与 Git 集成,并构建在 Git 版本控制系统之上(帮助开发人员协同工作并维护其工作历史)。当您完成代码审查后,它允许将更改合并到 Git 存储库中。

Gerrit 由 Google 的 Shawn Pearce 开发,使用 Java、Servlet 和 GWT(Google Web Toolkit)编写。Gerrit 的稳定版本是 2.12.2,于 2016 年 3 月 11 日发布,许可证为 Apache License v2

为什么要使用 Gerrit?

以下是您应该使用 Gerrit 的一些原因。

  • 您可以使用 Gerrit 轻松查找源代码中的错误。

  • 如果您有常规的 Git 客户端,则可以使用 Gerrit;无需安装任何 Gerrit 客户端。

  • Gerrit 可以用作开发人员和 Git 存储库之间的中间件。

Gerrit 的功能

  • Gerrit 是一个免费的开源 Git 版本控制系统。

  • Gerrit 的用户界面基于 Google Web Toolkit

  • 它是一个轻量级的框架,用于审查每个提交。

  • Gerrit 充当存储库,允许推送代码并为您的提交创建审查。

Gerrit 的优势

  • Gerrit 为 Git 存储库提供访问控制,并提供用于代码审查的 Web 前端。

  • 您可以推送代码而无需使用额外的命令行工具。

  • Gerrit 可以在存储库级别和分支级别授予或拒绝权限。

  • Gerrit 受 Eclipse 支持。

Gerrit 的缺点

  • 审查、验证和重新提交代码提交会减慢产品上市时间。

  • Gerrit 只能与 Git 一起使用。

  • Gerrit 速度缓慢,并且无法更改列出更改的排序顺序。

  • 您需要管理员权限才能在 Gerrit 上添加存储库。

Gerrit - 安装

在使用 Gerrit 之前,您必须安装 Git 并执行一些基本的配置更改。以下是不同平台上安装 Git 客户端的步骤。

Git 客户端的安装

Linux

您可以使用软件包管理工具在 Linux 上安装 Git。例如,如果您使用的是 Fedora,则可以使用以下命令:

sudo yum install git

如果您使用的是基于 Debian 的发行版(如 Ubuntu),则使用以下命令:

sudo apt-get install git

Windows

您可以从 Git 网站下载 Git 并将其安装在 Windows 上。只需访问 msysgit.github.io 链接并点击下载按钮。

Mac

可以使用以下命令在 Mac 上安装 Git:

brew install git

另一种安装 Git 的方法是从 Git 网站下载。只需访问 Git install on Mac 链接,它将为 Mac 平台安装 Git。

Gerrit - 配置 Git

安装 Git 后,您需要自定义配置变量以添加您的个人信息。您可以使用名为 git config 的 Git 工具以及 -l 选项(此选项提供当前配置)来获取和设置配置变量。

git config -l

运行上述命令后,您将获得如下所示的配置变量。

Git Configuration

您可以随时使用命令再次更改自定义信息。在下一章中,您将学习如何使用 git config 命令配置用户名和用户邮箱。

Gerrit - 设置您的用户名和电子邮件

您可以通过设置 nameemail 变量来跟踪每个提交。name 变量指定名称,而 email 变量标识与 Git 提交关联的电子邮件地址。您可以使用以下命令设置它们:

git config --global user.email "[email protected]"
git config --global user.name "your_name"

运行上述命令后,您将获得如下所示的用户名和电子邮件地址。

Set User Name and Email

Gerrit - 生成新的 SSH 密钥

SSH 代表 Secure Shell 或有时称为 Secure Socket Shell 协议,用于安全地从远程计算机访问网络服务。您可以设置 SSH 密钥以在计算机和 Gerrit 之间提供可靠的连接。

您可以使用以下命令在 Git Bash 中检查本地计算机上现有的 SSH 密钥:

$ ls ~/.ssh

点击回车键后,您将看到如下所示的现有 SSH 密钥:

SSH Key Existing

如果您没有找到任何现有的 SSH 密钥,则需要创建一个新的 SSH 密钥。

生成新的 SSH 密钥

您可以使用以下命令在 Git Bash 中生成一个新的 SSH 密钥以进行身份验证:

$ ssh-keygen -t rsa -C "[email protected]"

如果您已经拥有 SSH 密钥,则不要生成新的密钥,因为它们将被覆盖。只有在安装了 Git 和 Git Bash 后,才能使用 ssh-keygen 命令。

运行上述命令后,它将在 ~/.ssh 目录中创建 2 个文件。

  • ~/.ssh/id_rsa - 它是私钥或标识密钥。

  • ~/.ssh/id_rsa.pub - 它是公钥。

Gerrit - 添加您的 SSH 密钥

您可以将 SSH 密钥添加到不同平台上的 ssh-agent,如下所述。

Linux

在 Linux 系统上使用以下命令添加 SSH 密钥

cat /home/<local-user>/.ssh/id_rsa.pub

Windows

打开 GIT GUI 并转到 帮助 → 显示 SSH 密钥,如下所示。

Add SSH Key

然后,点击 复制到剪贴板 按钮,将密钥复制到剪贴板。

Add SSH Key

Mac

在 Mac OS X 中,您可以使用以下命令将 id_rsa.pub 内容复制到剪贴板。

$ pbcopy < ~/.ssh/id_rsa.pub

Gerrit - 将 SSH 密钥添加到您的 Gerrit 账户

可以使用以下步骤将 SSH 密钥添加到 Gerrit 账户:

  • 步骤 1 - 首先在 wmflabs.org 服务上创建一个账户。

  • Creating Account
Sign-in Gerrit
  • 步骤 3 - 然后在右上角,点击您的用户名并选择设置选项。

    Gerrit Settings

    在这里,我们创建了一个名为 John 的账户来使用 Gerrit。

  • 步骤 4 - 点击左侧菜单中的“SSH 公钥”选项,并将 SSH 公钥粘贴到字段中。

SSH Public Keys

Gerrit - 添加 SSH 密钥以用于 Git

您可以使用以下命令将 SSH 密钥添加到 Git:

  • 步骤 1 - 打开 Git Bash 并使用以下命令获取 ssh-agent。

$ eval 'ssh-agent'
  • 步骤 2 - 接下来,使用以下命令将 SSH 密钥添加到 ssh-agent

$ ssh-add ~/.ssh/id_rsa
  • 步骤 3 - 现在,运行 ssh 使用以下命令,该命令与首次登录时使用的 SSH 指纹匹配。

$ ssh -p 29418 <user_name>@gerrit.wikimedia.org

Add SSH Key with Git

在上面的屏幕截图中,您可以看到 xyz123 是一个实例 shell 账户名称,在创建 Gerrit 账户时使用,而 Abc123 是您的 Gerrit 账户的用户名。

Gerrit - 使用 Git 下载示例

您可以使用 Git 下载示例以及在 gerrit.wikimedia.org 上组织的任何项目的源代码,使用以下 Git Bash 命令。

$ git clone 
ssh://<user_name>@gerrit.wikimedia.org:29418/mediawiki/extensions/examples

git clone 命令将目录克隆到新目录中;换句话说,获取现有存储库的副本。运行上述命令后,您将获得类似于以下内容的屏幕截图。

Gerrit Download Example using Git

上述命令克隆了“examples”存储库,并从该存储库接收对象、文件等,并将其存储在您的本地分支中。

Gerrit - 安装 Git-Review

您可以通过在本节中讨论的不同平台上安装 git-review 来使用 Gerrit。

Windows

在 Windows 中,您可以按照以下步骤安装 git-review。

步骤 1 - 首先安装 Python 以安装 git-review。

Python Install

步骤 2 - 将 Python 安装保留在默认目录(如 C:\Python27)中,而不是安装在任何其他目录中。

步骤 3 - 接下来,使用 C:\Python27\;C:\Python27\Scripts\; 路径设置 Python 脚本目录的环境变量。

git_review_install

步骤 4 - 在 2.7 版本中,Python 将自动安装 pip。对于旧版本的 Python 2.7,您可以按照 此链接 中的说明安装 pip。

步骤 5 - 运行打开 Git Bash 并使用以下命令安装 git-review。

$ pip install git-review

Linux

在 Linux 中,您可以按照以下步骤安装 git-review:

步骤 1 - Linux 平台的用户在共享主机上没有 root 访问权限。因此,在没有 root 访问权限的情况下,您可以使用以下命令在用户目录中本地安装 git-review:

virtualenv --python=/usr/bin/python2.6 virtualenv
virtualenv/bin/pip install git-review==1.21

步骤 2 - 您可以通过两种方式扩展到本地二进制文件的路径:

PATH=$PATH:~/virtualenv/bin/
PATH=~/virtualenv/bin/:$PATH

步骤 3 - 现在,使用以下命令设置与 Gerrit 的工作。

git review -s
 or
~/virtualenv/bin/git-review -s

步骤 4 - 具有 root 访问权限的情况下,可以使用以下命令安装 git-review。

sudo apt-get install git-review

步骤 5 - 如果安装 Python 后没有 apt-get,则使用以下命令。

$ sudo easy_install pip
$ sudo pip install git-review==1.21

步骤 6 - 运行以下命令以与 Gerrit 协同工作。

git review -s

Mac OS X

在 Mac 上,您可以按照以下步骤安装 git-review。

步骤 1 - 从 此链接 安装 Homebrew。

步骤 2 - 接下来,使用以下命令安装 git-review。

brew install git-review

Gerrit - 配置 Git-Review

Gerrit 基于 Git 版本控制系统构建,用于从其他主机提取代码、将更改推送到代码、提交代码以供审查等。Git 的默认远程名称为 origin,我们使用以下命令告诉 git-review 使用此名称 'origin'

$ git config --global gitreview.remote origin

Gerrit - Git-Review 设置

Git-review 可用于将 Git 分支发送到 Gerrit 以进行审查。您可以在项目目录中使用以下命令设置 gitreview。

$ git review -s

Git-review 可以用作命令行工具,用于配置 Git 克隆、将分支提交到 Gerrit、获取现有文件等。Git-review 默认情况下会在名为 gerrit 的远程分支中查找用于与 Gerrit 协作的信息。

如果 git-review 找到 Gerrit 远程分支,则它会将分支提交到远程位置的 HEAD:refs/for/master,如果不存在 Gerrit 远程访问权限,则 git-review 会在存储库的根目录中查找 .gitreview 文件以及 Gerrit 远程信息。

Git-review 在内部处理以下操作:

  • 它将检查远程存储库是否可以用于提交分支。

  • 如果没有 Gerrit 远程访问权限,它将提示输入用户名并再次尝试访问存储库。

  • 它将创建一个名为 gerrit 的远程访问,指向 Gerrit。

  • 它将安装 commit-msg 钩子。

Gerrit - 更新主分支

您可以使用以下命令使 master 分支保持最新。git-pull 命令从另一个本地分支获取或与另一个存储库集成。

git pull origin master

Gerrit Update Master
  • 该命令将从 origin 远程(要从中获取的远程 URL)的 master 分支拉取更改,并将更改合并到本地检出的分支。

  • origin master 是上次从 origin 拉取的缓存副本。

  • Git pull 是 git fetch(从远程存储库获取新提交)和 git merge(将新提交集成到本地分支)的组合。

  • 默认情况下,Git pull 将本地分支与远程分支合并。

Gerrit - 创建分支

您可以使用以下命令在本地机器上创建分支。

$ git checkout -b name_of_branch origin/master

以上命令创建了一个新的分支,如下面的屏幕截图所示。

Gerrit Creating New Branch

这里,我们使用 branch123 作为新的本地分支。您可以使用以下命令从 'master' 显示新分支。

$ git branch

以上命令产生以下屏幕截图所示的结果。

Gerrit Creating New Branch1

Git checkout 在分支之间导航,更新工作目录中的文件,并通知 Git 在该分支上记录提交。

Gerrit - 进行和提交更改

当您修改本地文件系统中的代码时,您可以使用以下命令检查目录内的更改。

$ git diff

在项目目录中,我们将修改名为 Example/Example.hooks.php 文件中的一些更改并运行以上命令。我们将获得以下屏幕截图所示的结果。

Gerrit Commit Changes

您可以使用以下命令检查对文件或目录所做的更改。

$ git status

Gerrit Commit Changes1

以上命令允许查看哪些更改已暂存、哪些未暂存以及哪些文件未被 Git 跟踪。

接下来,您可以将工作目录中的更改添加到下一个提交中并更新文件,使用以下命令。

$ git add Example/Example.hooks.php

添加文件后,再次运行 git status 命令以查看添加到暂存区的更改,如下面的屏幕截图所示。

Gerrit Commit Changes2

您可以使用以下命令查看索引和上次提交之间的差异,以及哪些内容已暂存。

$ git diff --cached

Gerrit Commit Changes3

您可以使用以下命令将更改从本地存储库推送到远程目录。

$ git commit

运行以上命令时,它将要求您为更改添加提交消息。当您将提交推送到其他存储库时,其他人将看到此消息。

Gerrit Commit Changes4

添加提交消息并再次运行 git commit 命令,它将显示提交消息,如下面的屏幕截图所示。

Gerrit Commit Changes5

Gerrit - 准备将更改集推送到 Gerrit

在将更改合并到 master 之前,您需要在 Gerrit 中审查这些更改。可以同步在 master 中发生的更改。在您一直在使用的分支中使用以下命令。

$ git pull --rebase origin master
  • 以上命令将从远程分支获取更改或提交,并在 master 之上重新设置提交。

  • 完成更改并重新设置提交后,您可以将更改集推送到 Gerrit 以供审查。

  • 当更改不值得拥有单独的分支时,通常使用 Git pull --rebase。

  • Git pull 是 git fetch 和 git merge 的组合;而 git pull --rebase 是 git fetch 和 git rebase 的组合。

首先,运行 git pull origin master 命令,如下面的屏幕截图所示。

Push Changes to Gerrit

现在使用 git rebase master 命令重新设置提交,如下面的屏幕截图所示。

Push Changes to Gerrit1

Gerrit - 将更改集推送到 Gerrit

您可以使用 git-review 命令提交补丁以供审查。可以通过运行 git review -R 命令将更改集推送到 Gerrit,如下面的屏幕截图所示。

Push Changes to Gerrit

-R 选项通知 git-review 在将 git 更改提交到 Gerrit 之前不要完成重新设置。

您可以将代码提交到 master 以外的其他分支,使用以下命令。

git review name_of_branch

还可以将代码提交到不同的远程分支,使用以下命令。

git review -r name_of_remote

Gerrit - 查看更改/后续步骤

可以通过单击此 链接在 Gerrit 仪表板中查看更改。

View Changes in Gerrit

单击 修改的作者名称 链接,您将获得以下屏幕截图。

View Changes in Gerrit

单击 diffusion 链接以查看更改的文件以及其他详细信息,如下面的屏幕截图所示。

View Changes in Gerrit

Gerrit - 通过 Web 界面编辑

登录 Gerrit 帐户后,您可以通过 Web 界面编辑项目,如下面的步骤所示。

步骤 1 - 单击此 链接转到 Gerrit 仪表板。您将获得以下屏幕截图。

View Changes in Gerrit

步骤 2 - 接下来,单击 项目列下指定的 mediawiki/extensions/examples 链接。

步骤 3 - 单击工具栏中的 常规链接,如下面的屏幕截图所示。

Editing via Web Interface

步骤 4 - 打开 常规链接时,它将显示以下屏幕截图。

Editing via Web Interface

步骤 5 - 单击 创建更改按钮,它将打开一个弹出窗口,其中包含一些详细信息,如下面的屏幕截图所示。

Editing via Web Interface

步骤 6 - 输入信息并单击 创建按钮。

创建更改后,它将显示以下屏幕截图所示的信息。

Editing via Web Interface

步骤 7 - 单击 编辑,然后单击 添加。现在选择要编辑的文件。这里我们选择了文件 Example/i18n/en.json

Editing via Web Interface

打开文件时,它将显示以下屏幕截图中指定的 json 数据。

Editing via Web Interface

步骤 8 - 单击保存,然后单击 关闭按钮。

步骤 9 - 最后,单击 发布按钮以发布已编辑的文件。

Editing via Web Interface

步骤 10 - 您可以通过单击以下屏幕截图所示的 提交消息链接来更改提交消息。

Editing via Web Interface

步骤 11 - 按键盘上的 e 并添加一些额外的信息(如果您愿意)。单击 保存,然后单击 关闭按钮。

Editing via Web Interface

Gerrit - 合并前的审查

代码审查是 Gerrit 工作流程的重要组成部分。基本概念是必须在合并之前审查代码。

用于 MediaWiki 的代码工作流可以在合并之前进行审查,并且还可以审查自定义 MediaWiki 外观和功能的扩展。有一种特殊情况,您可以推送 国际化和本地化 提交。

完成开发后,您可以将所有提交推送到远程分支。有人会将更改获取到本地,并通过创建合并提交将这些获取的更改合并到本地 master 中。您可以将这些更改推送到 refs/for/master

Gerrit - 项目所有者

项目所有者意味着该项目属于提到的个人。项目所有者是一个虚拟组,您不能在其中添加成员或其他组。项目所有者提供访问权限,以允许不同组对项目进行权限。

您可以使用以下步骤查看项目的访问权限。

步骤 1 - 单击此 链接打开 Gerrit 仪表板。

Gerrit Project Owner

步骤 2 - 单击 项目→列表选项。在项目列表中搜索项目并单击它,如下面的屏幕截图所示。

Gerrit Project Owner

步骤 3 - 打开项目后,单击 访问选项,如下面的屏幕截图所示。

Gerrit Project Owner

步骤 4 - 单击 编辑选项。您可以通过单击下拉菜单更改访问权限。单击 保存更改按钮,如下面的屏幕截图所示。

Gerrit Project Owner

如何评论、审查和合并

任何人都可以在 Gerrit 中审查代码并对代码发表评论。请考虑以下步骤:

步骤 1 - 登录 Gerrit 以打开前面章节中指定的 Gerrit 仪表板。

步骤 2 - 现在,单击任何包含 Gerrit 项目、分支、更新日期等的主题,如下面的屏幕截图所示。

Gerrit Review Merge Code

步骤 3 - 接下来,它将显示一个屏幕。单击 提交消息选项,如下面的屏幕截图所示。

Gerrit Review Merge Code

更改集的重要字段包括审查者、添加审查者、并排关闭等。比较补丁集包括选择旧版本历史记录列表、扩展较新补丁集详细信息等。审查和合并或拒绝代码包括放弃更改按钮、提交补丁按钮等,这些在 Gerrit 的当前版本中不存在。

广告