我们有两个分支,我想将一个分支合并到另一个分支。 与任何代码更改一样,需要在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
上重写了。未来的合并将受到影响,因为合并未被记录。
答案 0 :(得分:1)
您似乎找到了arc diff
步骤的解决方法,但遗憾的是我找不到更好的解决方法。
arc land --merge
将更改作为合并而不是压缩。
答案 1 :(得分:0)
我有一种端到端工作的方法。这很烦人。
arc diff --preview
创建差异。arc patch
并比较各种相关版本(源分支,目标分支,合并结果,共同祖先)。arc land --merge --revision D123
登陆差异。 --merge
(如JSON's answer中所述,可以防止压缩提交,--revision
可以避免与用于归档合并内容的修订混淆。如果审稿人要求更改,我没有检查会发生什么,在我降落之前需要另外arc diff
。