如何使用tortoisehg合并强制工具解析

时间:2014-02-26 21:57:20

标签: tortoisehg

据我所知,tortoisehg合并计划就像这样工作

  

Mercurial的合并算法看起来像这样(简化):

     
      
  • 使用共同的祖先作为共享的起始修订,确定每个分支修改的文件

  •   
  • 对于在一个分支上修改的每个文件,采取更改后的版本

  •   
  • 对于在两个分支上修改的每个文件,执行文件合并

  •   

避免第3步非常简单。您可以轻松强制解决冲突工具。

我的问题是,你如何避免第2步?我想强制一个工具解决所有带有更改的文件。

真正令人讨厌的部分是,通过大量复杂的合并,追踪自动更新不好玩的所有文件。

2 个答案:

答案 0 :(得分:1)

我希望我没有看到你的问题,但我仍然难以看到它的实际应用。

反正!我不确定使用TortoiseHg或命令行mercurial(或者甚至可能)这样做的最佳方法,但是使用diff工具和一些争论,我管理了一些可能满足您需求的东西。如果这很有用,那么自动化一些争论很容易:)

我通常使用BeyondCompare,但它不支持3路文件夹比较(尽管请参阅this post)。所以为此,我使用了KDiff(TortoiseHg附带)。

  1. 首先,右键单击每个头并导出>档案>文件目录(选择您喜欢的任何目标文件夹)。
  2. 接下来,在共同的祖先上做同样的事情(通过选择两个变更集,右键单击并选择“转到共同的祖先”轻松完成)。
  3. 现在打开KDiff3并选择上面创建的三个文件夹。 KDiff的输出应该非常直观地显示两个分支中不同的所有文件。
  4. 执行上一步时检查“合并”框(并提供第四个目标目录),您可以根据需要手动合并所有内容。
  5. 将合并的结果重新置于一个新的mercurial变更集中虽然繁琐,但在概念上应该是直截了当的。
  6. Sample output from KDiff3

    我希望这符合你的目的。如果您需要澄清,请告诉我们!

答案 1 :(得分:0)

我猜这个因为我不使用hg。

也许您可以通过以下方式强制它进行交互: hg --config ui.interactive = yes

其次,如果这不起作用,您可以指定自定义合并工具,该工具对单面更改具有不同的行为。或者指定规则:internal:prompt,以便它总是询问该做什么,并且可能在接受更改之前让你有机会做差异。

参考:http://www.selenic.com/mercurial/hg.1.html#id4

相关问题