【发布时间】:2017-04-22 11:11:12
【问题描述】:
我们有两个分支,我想将一个分支的尖端合并到另一个分支上。 与任何代码更改一样,这需要在 Phabricator/Differential 中进行审查。
对我来说,这一切似乎都是非常正常的工作流程,但我不知道如何完成它。
我们所做的合并
我们有两个分支 - master 和 beta。大多数开发都是在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 将所有更改压缩到一个提交中。对于正常的开发,我同意这个理由 - 我希望将一项更改作为一次提交输入。
但这里的结果很糟糕 - 没有 master 和 beta 之间合并的记录。似乎所有master 的更改都被beta 重写了。未来的合并将受到影响,因为没有记录合并。
【问题讨论】:
标签: git merge phabricator