4

我在存储库上使用 Mercurial Queues,并将这些补丁放在补丁存储库中。另一位贡献者克隆了我的补丁队列并进行了自己的更改。我现在想将他们的更改合并到我的本地补丁存储库中。

我正在尝试找到一个很好的工作流程来执行此合并

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

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

有没有更好的办法?

4

2 回答 2

1

没有很好的方法来处理这个。我最终可能会做的是创建两个克隆,qfinish一个是你的补丁,另一个是贡献者的补丁。那时,您将拥有应用了每个单独补丁的净效果的存储库。然后你将hg pull其中一个克隆到另一个中,并hg merge让你使用图形工具来合并补丁的结果——唯一的区别应该是你的补丁的不同。此时,理想情况下,您将能够qimport合并变更集,但您不能这样做,因此您必须使用 'hg diff -r tip-1 -r tip' 来获得一个新的差异,即在一切开始之前和合并两个结果之后。然后是你 '

绝对是次优的,但我能想出的最好的。我很想听到更好的解决方案。

于 2011-01-11T21:25:52.897 回答
0

恐怕没有自动合并补丁的方法。

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

这样一来,自从您创建新补丁以来,您就不会过多地踩到彼此的脚趾。

于 2011-01-13T13:49:02.617 回答