【问题标题】:Phabricator - How to Review a MergePhabricator - 如何审查合并
【发布时间】:2017-04-22 11:11:12
【问题描述】:

我们有两个分支,我想将一个分支的尖端合并到另一个分支上。 与任何代码更改一样,这需要在 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 重写了。未来的合并将受到影响,因为没有记录合并。

【问题讨论】:

    标签: git merge phabricator


    【解决方案1】:

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

    arc land --merge 会将更改作为合并而不是 squash。

    【讨论】:

    • 谢谢。我不认为我的解决方法真的有效。我现在看到我没有完全正确地描述它 - 在我做 arc diff 的克隆中的 arc land 不起作用,因为没有在那里创建修订版。我可以运行arc patch,但它会压缩提交,因此无论arc land 如何工作,都不会记录合并。
    • 你真的想再次审查已经审查过的提交吗?如果没有,您最好在工作流程中使用git rebase master 而不是git merge master。可能您只需要查看完成合并所需的手动冲突解决方案?
    • 记录合并对我来说很重要。如果我理解正确,git rebase 不会这样做。审查合并非常重要——不是审查已经审查的提交,而是确保它们被正确合并。一旦我在 Phabricator 中进行了修订,审阅者可以arc patch 并验证需要的任何内容。
    • 感谢您的帮助。我设法得到了一个完整的解决方案,其中包括您的答案等等。有兴趣可以看我的回答。
    【解决方案2】:

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

    1. 在 git 中合并 - 一个正常的合并。
    2. 使用arc diff --preview 创建差异。
    3. 转到最后一条命令打印的链接并根据差异创建修订。
    4. 审阅者现在可以审阅更改。要正确查看,他需要运行 arc patch 并比较各种相关版本(源分支、目标分支、合并结果、共同祖先)。
    5. 使用arc land --merge --revision D123 登陆差异。 --merge(如 JSON's answer 中的建议可防止压缩提交,--revision 可防止与用于登陆合并内容的修订混淆。

    我没有检查如果审阅者要求更改会发生什么,并且需要另一个 arc diff 才能登陆。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-17
      • 1970-01-01
      • 2022-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多