提交代码以供审查(也称为“提交补丁”)

首先,提交您的更改。例如

hg add /path/to/file/changed
hg commit -m "Bug 1234567 - [devtools] Implement feature XYZ. r=name,name2!"

详细说明的提交消息

  • Bug 1234567 - Bugzilla 中错误的编号。

  • - [devtools] Implement feature XYZ. - 提交消息,带有“devtools”前缀以快速识别 DevTools 代码集。

  • r=name - 请求审查的简写形式。输入您使用上一步中的说明找到的名称。

  • ,name2! - 您可能有多个审阅者。 ! 使审查成为阻塞审查(没有接受审查,补丁无法合并)。

然后使用 moz-phab 在 Phabricator 中创建修订版

moz-phab submit

将创建一个修订版,其中包含这些信息以及您更改与您基于其进行工作的存储库中的点之间的代码差异(此差异有时称为“补丁”,因为它是您需要应用于存储库以获得最终状态的内容)。

如果您单击提供的修订版 URL,它将带您进入 Phabricator 的界面,审阅者也将访问该界面以审查代码。他们将查看您的更改并确定它们是否需要任何其他工作,具体取决于更改是否修复了错误描述的内容。为了更好地了解他们将查看和验证的类型,请阅读代码审查清单

有关使用 moz-phab 的更多信息,您可以运行

moz-phab -h

或获取有关特定命令(此处为 submit)的信息

moz-phab submit -h

审阅者可能会建议您进行其他更改。例如,他们可能会建议使用已经存在的助手(但您不知道),或者他们可能会建议重命名某些内容以使事情更清晰。或者他们可能会建议您做更少的事情(例如,如果您更改了超出错误范围的其他内容)。或者他们可能只是在事情不清楚时提出问题。如果您对评论不清楚或不确定您正在交互的代码部分,也可以提出问题。对一个人来说非常明显的事情可能会让其他人感到困惑。

因此,您可能需要返回代码并进行一些编辑以解决问题和建议。完成此操作后,您必须更新现有的提交

hg commit --amend

并再次提交更改

moz-phab submit

根据错误的复杂性,您可能需要多次经历提交更改并进行审查的循环。

一旦您的代码修复了错误,并且没有更多阻塞问题,审阅者将批准更改,并且代码现在可以合并到存储库中。

压缩提交

有时可能会要求您压缩提交。压缩是指在您处理错误时创建多个提交的情况下将多个提交合并为一个。压缩错误很容易!

我们将使用 Mercurial 中的 histedit 扩展来压缩提交。您可以按照以下步骤检查此扩展是否在您的 Mercurial 安装中启用

  • 打开 .hgrc(Linux/OSX)或 Mercurial.ini(Windows)——这是 Mercurial 的默认配置文件——位于您的主目录中,使用您喜欢的编辑器。

  • 然后在文件中添加 histedit= [extensions] 列表下,如果尚未存在。

然后,运行以下命令

hg histedit

您将在终端上看到类似以下内容

pick 3bd22d1cc59a 0 "First-Commit-Message"
pick 81c4d40e57d3 1 "Second-Commit-Message"

这些行代表您的提交。假设我们要将 81c4d40e57d3 合并到 3bd22d1cc59a。然后将 81c4d40e57d3 前面的 pick 替换为 fold(或简写为“f”)。保存更改。

您将看到 81c4d40e57d3 已与 3bd22d1cc59a 组合。您可以使用 hg log 命令验证这一点。

您可以折叠任意数量的提交,它们将与上面第一个未使用 fold 的提交组合。