【发布时间】:2013-03-15 22:25:53
【问题描述】:
我正在编写代码来分析我们对Hg 的提交,并将我的结果与TortoiseHg 进行比较。在合并的情况下,我无法理解 TortoiseHg 的行为。
当我在TortoiseHg 中选择合并变更集时,受影响的文件列表仅显示那些有冲突的文件,除非我按下"Show All" 按钮。至少这似乎是意图,基于我从网络上收集到的信息,并且观察到如果我按下“显示全部”按钮,列表中显示的文件会有一个双头箭头。
我试图通过将变更集中的每个文件与父母双方进行比较来模拟这一点,并且仅在我的分析中包含与父母双方不同的文件。但是,我遇到了 TortoiseHg 在合并描述中显示的文件,但仅与一个父级不同。我在TortoiseHg 中也看到了这一点 - 与父级 1 或 2 的差异显示了变化,但另一个父级没有。
我还尝试使用 --git 选项进行差异化,以确保它不是我缺少的元数据更改,但这根本不会改变结果。
要获取有关我正在使用的变更集的信息:
hg log -v -r <rev> --removed --style xml
我选择合并变更集的父项,并为合并中的每个文件执行
hg diff -r <parent1> -r <rev> filename
hg diff -r <parent2> -r <rev< filename
我发现文件TortoiseHg 在我报告的合并摘要中显示为无冲突合并。
任何人都可以阐明差异吗?
更新: 我能够使用 TortoiseHg 本身的源代码重现这一点。
从https://hg01.codeplex.com/tortoisehg克隆 在 tortoiseHg 中打开 repo 并选择 rev 12602 (58eb7c70)。这是与 12599 (6c716caa) 和 12601 (39c95a81) 的父代的合并。
TortoiseHg 将文件 tortoisehg/hgqt/repowidget.py 显示为合并中唯一的冲突文件,但
hg diff -r 12599 -r 12602 tortoisehg/hgqt/repowidget.py
什么都不返回,而
hg diff -r 12601 -r 12602 tortoisehg/hgqt/repowidget.py
显示两行变化。
【问题讨论】:
-
您的存储库是公开的吗?有一些真实的数据可以让这更容易。
-
很遗憾没有,但我会看看是否可以在公共回购中重新创建问题
标签: mercurial merge tortoisehg