- Gerrit 教程
- Gerrit - 首页
- Gerrit - 概述
- 在 Gerrit 中设置 SSH 密钥
- 生成新的 SSH 密钥
- 添加您的 SSH 密钥
- 将 SSH 密钥添加到您的 Gerrit 账户
- 添加 SSH 密钥以用于 Git
- 使用 Git 下载扩展
- 准备使用 Gerrit
- 安装 Git-Review
- 配置 Git-Review
- 设置 Git-Review
- Gerrit 中代码如何审查
- 合并前的审查
- Gerrit - 项目所有者
- 如何评论、审查、合并
- Gerrit 有用资源
- Gerrit - 快速指南
- Gerrit - 有用资源
- Gerrit - 讨论
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 config 命令配置用户名和用户邮箱。
Gerrit - 设置您的用户名和电子邮件
您可以通过设置 name 和 email 变量来跟踪每个提交。name 变量指定名称,而 email 变量标识与 Git 提交关联的电子邮件地址。您可以使用以下命令设置它们:
git config --global user.email "[email protected]" git config --global user.name "your_name"
运行上述命令后,您将获得如下所示的用户名和电子邮件地址。
Gerrit - 生成新的 SSH 密钥
SSH 代表 Secure Shell 或有时称为 Secure Socket Shell 协议,用于安全地从远程计算机访问网络服务。您可以设置 SSH 密钥以在计算机和 Gerrit 之间提供可靠的连接。
您可以使用以下命令在 Git Bash 中检查本地计算机上现有的 SSH 密钥:
$ ls ~/.ssh
点击回车键后,您将看到如下所示的现有 SSH 密钥:
如果您没有找到任何现有的 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 密钥,如下所示。
然后,点击 复制到剪贴板 按钮,将密钥复制到剪贴板。
Mac
在 Mac OS X 中,您可以使用以下命令将 id_rsa.pub 内容复制到剪贴板。
$ pbcopy < ~/.ssh/id_rsa.pub
Gerrit - 将 SSH 密钥添加到您的 Gerrit 账户
可以使用以下步骤将 SSH 密钥添加到 Gerrit 账户:
步骤 1 - 首先在 wmflabs.org 服务上创建一个账户。
步骤 2 - 接下来登录 Gerrit 的 Web 界面。
步骤 3 - 然后在右上角,点击您的用户名并选择设置选项。
在这里,我们创建了一个名为 John 的账户来使用 Gerrit。
步骤 4 - 点击左侧菜单中的“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
在上面的屏幕截图中,您可以看到 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 命令将目录克隆到新目录中;换句话说,获取现有存储库的副本。运行上述命令后,您将获得类似于以下内容的屏幕截图。
上述命令克隆了“examples”存储库,并从该存储库接收对象、文件等,并将其存储在您的本地分支中。
Gerrit - 安装 Git-Review
您可以通过在本节中讨论的不同平台上安装 git-review 来使用 Gerrit。
Windows
在 Windows 中,您可以按照以下步骤安装 git-review。
步骤 1 - 首先安装 Python 以安装 git-review。
步骤 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
该命令将从 origin 远程(要从中获取的远程 URL)的 master 分支拉取更改,并将更改合并到本地检出的分支。
origin master 是上次从 origin 拉取的缓存副本。
Git pull 是 git fetch(从远程存储库获取新提交)和 git merge(将新提交集成到本地分支)的组合。
默认情况下,Git pull 将本地分支与远程分支合并。
Gerrit - 创建分支
您可以使用以下命令在本地机器上创建分支。
$ git checkout -b name_of_branch origin/master
以上命令创建了一个新的分支,如下面的屏幕截图所示。
这里,我们使用 branch123 作为新的本地分支。您可以使用以下命令从 'master' 显示新分支。
$ git branch
以上命令产生以下屏幕截图所示的结果。
Git checkout 在分支之间导航,更新工作目录中的文件,并通知 Git 在该分支上记录提交。
Gerrit - 进行和提交更改
当您修改本地文件系统中的代码时,您可以使用以下命令检查目录内的更改。
$ git diff
在项目目录中,我们将修改名为 Example/Example.hooks.php 文件中的一些更改并运行以上命令。我们将获得以下屏幕截图所示的结果。
您可以使用以下命令检查对文件或目录所做的更改。
$ git status
以上命令允许查看哪些更改已暂存、哪些未暂存以及哪些文件未被 Git 跟踪。
接下来,您可以将工作目录中的更改添加到下一个提交中并更新文件,使用以下命令。
$ git add Example/Example.hooks.php
添加文件后,再次运行 git status 命令以查看添加到暂存区的更改,如下面的屏幕截图所示。
您可以使用以下命令查看索引和上次提交之间的差异,以及哪些内容已暂存。
$ git diff --cached
您可以使用以下命令将更改从本地存储库推送到远程目录。
$ git commit
运行以上命令时,它将要求您为更改添加提交消息。当您将提交推送到其他存储库时,其他人将看到此消息。
添加提交消息并再次运行 git commit 命令,它将显示提交消息,如下面的屏幕截图所示。
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 命令,如下面的屏幕截图所示。
现在使用 git rebase master 命令重新设置提交,如下面的屏幕截图所示。
Gerrit - 将更改集推送到 Gerrit
您可以使用 git-review 命令提交补丁以供审查。可以通过运行 git review -R 命令将更改集推送到 Gerrit,如下面的屏幕截图所示。
-R 选项通知 git-review 在将 git 更改提交到 Gerrit 之前不要完成重新设置。
您可以将代码提交到 master 以外的其他分支,使用以下命令。
git review name_of_branch
还可以将代码提交到不同的远程分支,使用以下命令。
git review -r name_of_remote
Gerrit - 查看更改/后续步骤
可以通过单击此 链接在 Gerrit 仪表板中查看更改。
单击 修改的作者名称 链接,您将获得以下屏幕截图。
单击 diffusion 链接以查看更改的文件以及其他详细信息,如下面的屏幕截图所示。
Gerrit - 通过 Web 界面编辑
登录 Gerrit 帐户后,您可以通过 Web 界面编辑项目,如下面的步骤所示。
步骤 1 - 单击此 链接转到 Gerrit 仪表板。您将获得以下屏幕截图。
步骤 2 - 接下来,单击 项目列下指定的 mediawiki/extensions/examples 链接。
步骤 3 - 单击工具栏中的 常规链接,如下面的屏幕截图所示。
步骤 4 - 打开 常规链接时,它将显示以下屏幕截图。
步骤 5 - 单击 创建更改按钮,它将打开一个弹出窗口,其中包含一些详细信息,如下面的屏幕截图所示。
步骤 6 - 输入信息并单击 创建按钮。
创建更改后,它将显示以下屏幕截图所示的信息。
步骤 7 - 单击 编辑,然后单击 添加。现在选择要编辑的文件。这里我们选择了文件 Example/i18n/en.json。
打开文件时,它将显示以下屏幕截图中指定的 json 数据。
步骤 8 - 单击保存,然后单击 关闭按钮。
步骤 9 - 最后,单击 发布按钮以发布已编辑的文件。
步骤 10 - 您可以通过单击以下屏幕截图所示的 提交消息链接来更改提交消息。
步骤 11 - 按键盘上的 e 并添加一些额外的信息(如果您愿意)。单击 保存,然后单击 关闭按钮。
Gerrit - 合并前的审查
代码审查是 Gerrit 工作流程的重要组成部分。基本概念是必须在合并之前审查代码。
用于 MediaWiki 的代码工作流可以在合并之前进行审查,并且还可以审查自定义 MediaWiki 外观和功能的扩展。有一种特殊情况,您可以推送 国际化和本地化 提交。
完成开发后,您可以将所有提交推送到远程分支。有人会将更改获取到本地,并通过创建合并提交将这些获取的更改合并到本地 master 中。您可以将这些更改推送到 refs/for/master。
Gerrit - 项目所有者
项目所有者意味着该项目属于提到的个人。项目所有者是一个虚拟组,您不能在其中添加成员或其他组。项目所有者提供访问权限,以允许不同组对项目进行权限。
您可以使用以下步骤查看项目的访问权限。
步骤 1 - 单击此 链接打开 Gerrit 仪表板。
步骤 2 - 单击 项目→列表选项。在项目列表中搜索项目并单击它,如下面的屏幕截图所示。
步骤 3 - 打开项目后,单击 访问选项,如下面的屏幕截图所示。
步骤 4 - 单击 编辑选项。您可以通过单击下拉菜单更改访问权限。单击 保存更改按钮,如下面的屏幕截图所示。
如何评论、审查和合并
任何人都可以在 Gerrit 中审查代码并对代码发表评论。请考虑以下步骤:
步骤 1 - 登录 Gerrit 以打开前面章节中指定的 Gerrit 仪表板。
步骤 2 - 现在,单击任何包含 Gerrit 项目、分支、更新日期等的主题,如下面的屏幕截图所示。
步骤 3 - 接下来,它将显示一个屏幕。单击 提交消息选项,如下面的屏幕截图所示。
更改集的重要字段包括审查者、添加审查者、并排关闭等。比较补丁集包括选择旧版本历史记录列表、扩展较新补丁集详细信息等。审查和合并或拒绝代码包括放弃更改按钮、提交补丁按钮等,这些在 Gerrit 的当前版本中不存在。