Phabricator - 如何检查合并

时间:2016-12-07 13:22:08

标签: git merge phabricator

我们有两个分支,我想将一个分支合并到另一个分支。 与任何代码更改一样,需要在Phabricator / Differential中进行检查。

这对我来说似乎都是非常正常的工作流程,但我无法弄清楚如何完成它。

合并我们

我们有两个分支 - masterbeta。大部分开发都是在master完成的。 有时,我们会从master合并到beta。 使用普通的git,我们会这样做:

% git checkout beta
% git merge master
% git commit
% git push

但是对于Phabricator,我们不能git push(并且不想 - 代码审核很重要)。

arc diff

的问题

我按上述方法进行合并,但将git push替换为arc diff

首先,它提供的消息是我合并的一个提交的提交消息。这不是一个好消息,所以我用merge master into beta替换它。

接下来,我收到此消息:

You don't own revision D97: "Some change".
Normally, you should only update revisions you own. You can "Commandeer"
this revision from the web interface if you want to become the owner.

Update this revision anyway? [y/N]

修订版D97是一项已经落入master的更改。我当然不想征服它。我回答否和arc diff退出。

正在运行arc diff --create的行为相同。

arc land

的问题

我可以使用arc diff --preview创建差异,然后使用Web UI创建修订。我不知道这是不是一个好主意,但我可以继续进行审核。

在补丁被批准后,arc land将所有更改压缩为一次提交。对于正常开发,我同意基本原理 - 我希望一个更改作为一个提交输入。

但是结果很糟糕 - masterbeta之间没有合并的记录。好像所有master的更改都在beta上重写了。未来的合并将受到影响,因为合并未被记录。

2 个答案:

答案 0 :(得分:1)

您似乎找到了arc diff步骤的解决方法,但遗憾的是我找不到更好的解决方法。

arc land --merge将更改作为合并而不是压缩。

答案 1 :(得分:0)

我有一种端到端工作的方法。这很烦人。

  1. 合并git - 正常合并。
  2. 使用arc diff --preview创建差异。
  3. 转到最后一个命令打印的链接,并根据差异创建修订。
  4. 审核人员现在可以查看更改。要正确审核,他需要运行arc patch并比较各种相关版本(源分支,目标分支,合并结果,共同祖先)。
  5. 使用arc land --merge --revision D123登陆差异。 --merge(如JSON's answer中所述,可以防止压缩提交,--revision可以避免与用于归档合并内容的修订混淆。
  6. 如果审稿人要求更改,我没有检查会发生什么,在我降落之前需要另外arc diff