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 是一个免费的开源 Git 版本控制系统。

  • Gerrit的用户界面是在Google Web Toolkit上形成的。

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

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

格瑞特的优点

  • Gerrit 为 Git 存储库和 Web 前端提供访问控制以进行代码审查。

  • 您无需使用其他命令行工具即可推送代码。

  • Gerrit 可以允许或拒绝存储库级别乃至分支级别的权限。

  • Gerrit 由 Eclipse 支持。

Gerrit 的缺点

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

  • Gerrit 只能使用 Git。

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

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

Gerrit - 安装

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

Git客户端的安装

Linux

Linux下可以通过软件包管理工具安装Git。例如,如果您使用 Fedora,您可以使用 as -

sudo yum install git

如果您使用基于 Debian 的发行版(例如 Ubuntu),请使用以下命令 -

sudo apt-get install git

Windows

您可以通过从 Git 网站下载来在 Windows 上安装 Git。只需访问msysgit.github.io链接并单击下载按钮即可。

苹果

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

brew install git

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

Gerrit - 配置 Git

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

git config -l

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

Git配置

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

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

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

git config --global user.email "your_email@mail.com"
git config --global user.name "your_name"

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

设置用户名和电子邮件

Gerrit - 生成新的 SSH 密钥

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

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

$ ls ~/.ssh

单击 Enter 按钮后,您将看到现有的 SSH 密钥,如下图所示 -

SSH 密钥现有

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

生成新的 SSH 密钥

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

$ ssh-keygen -t rsa -C "your_email@mail.com"

如果您已经有 SSH 密钥,则不要生成新密钥,因为它们将被覆盖。仅当您已使用 Git Bash 安装了 Git 时,才可以使用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 密钥”,如下图所示。

添加 SSH 密钥

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

添加 SSH 密钥

苹果

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

$ pbcopy < ~/.ssh/id_rsa.pub

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

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

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

  • 创建账户
登录 Gerrit
  • 步骤 3 - 然后在右上角单击您的用户名并选择“设置”选项。

    格里特设置

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

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

SSH 公钥

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

使用 Git 添加 SSH 密钥

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

Gerrit - 使用 Git 下载示例

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

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

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

使用 Git 下载 Gerrit 示例

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

Gerrit - 安装 Git-Review

您可以通过在不同平台上安装git-review来使用 Gerrit ,如本章所述。

Windows

在 Windows 中,您可以按照以下步骤中列出的方式安装 git-review。

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

Python安装

步骤 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 审查

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 更新大师
  • 该命令将从原始远程(要从中获取的远程 URL)、master 分支拉取更改,并将更改合并到本地签出分支。

  • 源主机是最后从源拉取的缓存副本。

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

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

Gerrit - 创建一个分支

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

$ git checkout -b name_of_branch origin/master

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

Gerrit 创建新分支

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

$ git branch

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

Gerrit 创建新分支1

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

Gerrit - 做出并提交你的改变

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

$ git diff

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

Gerrit 提交更改

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

$ git status

Gerrit 提交更改1

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

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

$ git add Example/Example.hooks.php

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

Gerrit 提交更改2

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

$ git diff --cached

Gerrit 提交更改3

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

$ git commit

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

Gerrit 提交更改4

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

Gerrit 提交更改5

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

在将更改合并到 master 之前,您需要检查 Gerrit 中的更改。可以同步主站中发生的更改。在您正在处理的分支中使用以下命令。

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

  • 完成更改并重新调整提交基础后,您可以将更改集推送到 Gerrit 进行审核。

  • 当更改不需要单独的分支时,通常会使用 Git pull --rebase。

  • git pull 是 git fetch 和 git merge 的组合;其中git pull --rebase是 git fetch 和 git rebase 的组合。

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

将更改推送到 Gerrit

现在使用 git rebase master 命令来对提交进行变基,如以下屏幕截图所示。

将更改推送到 Gerrit1

Gerrit - 将您的变更集推送到 Gerrit

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

将更改推送到 Gerrit

-R选项通知 git-review 在将 git 更改提交给 Gerrit 之前不要完成 rebase。

您可以使用以下命令将代码提交到其他分支而不是主分支。

git review name_of_branch

还可以使用以下命令将代码提交到不同的遥控器。

git review -r name_of_remote

Gerrit - 查看更改/后续步骤

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

查看 Gerrit 中的更改

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

查看 Gerrit 中的更改

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

查看 Gerrit 中的更改

Gerrit - 通过 Web 界面进行编辑

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

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

查看 Gerrit 中的更改

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

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

通过网络界面编辑

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

通过网络界面编辑

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

通过网络界面编辑

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

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

通过网络界面编辑

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

通过网络界面编辑

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

通过网络界面编辑

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

步骤 9 - 最后单击“发布”按钮发布编辑后的文件

通过网络界面编辑

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

通过网络界面编辑

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

通过网络界面编辑

Gerrit - 合并前审查

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

可以在合并之前检查MediaWiki代码的工作流程,还可以检查自定义 MediaWiki 外观和工作的扩展。在一种特殊情况下,您可以推动国际化和本地化承诺。

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

Gerrit - 项目所有者

项目所有者是指该项目属于上述人员。项目所有者是一个虚拟组,您无法在其中添加成员或其他组。项目所有者提供访问权限,以允许不同组对项目进行权限。

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

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

Gerrit 项目所有者

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

Gerrit 项目所有者

步骤 3 - 打开项目时,单击“访问”选项,如以下屏幕截图所示。

Gerrit 项目所有者

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

Gerrit 项目所有者

如何评论、审阅和合并

任何人都可以在 Gerrit 中查看代码并对代码进行评论。考虑以下步骤 -

步骤 1 - 登录 Gerrit 以打开上一章中指定的 Gerrit 仪表板。

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

Gerrit 审查合并代码

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

Gerrit 审查合并代码

变更集的重要字段有 Reviewers、Add Reviewer、Side-by-side off 等。比较补丁集包括选择旧版本历史列表、扩展较新的补丁集详细信息等。审查并合并或拒绝代码包括放弃更改按钮、提交补丁按钮等这些在当前版本的 Gerrit 中不存在。