Mercurial队列:合并多个存储库中的补丁

时间:2011-01-11 20:51:04

标签: mercurial patch mq mercurial-queue

我在存储库上使用Mercurial Queues,并将这些补丁放在补丁存储库中。另一位撰稿人克隆了我的补丁队列并对其进行了更改。我现在想在我的本地补丁库中合并他们的更改。

我正在尝试找到执行此合并的良好工作流程

  • 反映了修补程序存储库历史记录中贡献者的更改集
  • 在发生冲突时调用用户的合并工具

最初,我只是尝试直接合并补丁。这在非常简单的情况下是可以的,但是当许多事情发生变化时效果不好,因为补丁依赖于行号上下文,这似乎不是我应该担心调整自己的东西。总的来说,我发现检查补丁的3路差异太复杂了。

有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

没有好办法解决这个问题。我最终可能会做的就是创建两个克隆,并将qfinish个补丁放在一个补丁中,将贡献者补丁放在另一个补丁中。那就是你应该使用每个单独补丁的净效果进行回购。然后将hg pull其中一个克隆放入另一个克隆,hg merge将允许您使用图形工具合并补丁的结果 - 唯一的区别应该是补丁中的差异。在这一点上,理想情况下,你将能够qimport合并变更集,但你不能这样做,所以你必须'hg diff -r tip-1 -r tip'来获得一个新的差异这是之前 - 所有开始之前和之后合并 - 两个结果之间的区别。然后你'qimport`将差异并提交到你的补丁队列仓库,并附上说明它来自何处的说明。

决定次优,但我能想出最好的。我很想听听更好的解决方案。

答案 1 :(得分:0)

我担心没有自动合并补丁的方式。

但是,您可以使用的一个“技巧”是创建新的修补程序,而不是在需要修改它们时编辑/刷新现有的修补程序。如果大家都同意正确的做事方式,那么hg qfold补丁。

因为你创建了新的补丁,所以你不会踩到彼此的脚趾。