【发布时间】:2011-04-13 21:49:43
【问题描述】:
为了确保我们在合并we useinternal:local时使用某些文件的主干版本:
[merge-patterns]
.hgtags = internal:local
pom.xml = internal:local
似乎在某些情况下,合并不使用本地文件,它实际上合并了来自远程存储库的更改。为什么会发生这种情况?
【问题讨论】:
为了确保我们在合并we useinternal:local时使用某些文件的主干版本:
[merge-patterns]
.hgtags = internal:local
pom.xml = internal:local
似乎在某些情况下,合并不使用本地文件,它实际上合并了来自远程存储库的更改。为什么会发生这种情况?
【问题讨论】:
Mercurial“premerge”内部合并实际上在启动合并工具之前就成功解决了某些文件的合并冲突。
如果选择的合并工具 premerge 是 真那么内部合并是 尝试过,如果看起来成功 那么结果将是默默地 在不运行实际合并的情况下使用 工具
查看this article 了解更多信息,了解合并工具配置。可以使用对 Mercurial.ini 文件的以下修改来关闭特定类型文件(或目录)的预合并:
[merge-tools]
<name>.premerge = False
<name>.args = --auto $base $other $other -o $output
<name>.executable = kdiff3
[merge-patterns]
**.xml = <name>
.hgtags = <name>
注意 kdiff3 应该默认带有 TortoiseHg,<name> 可以是任何你想要的;称它为“localFilesOnly”或类似的名称。
【讨论】:
[merge-patterns] 部分。
executable 参数定义应使用 kdiff3 进行合并,args 参数指定将强制 kdiff23 始终采用本地文件或其他文件的参数模式。在上面的示例中,它设置为始终采用“其他”文件(即:合并回的更改),但您可以调整它以始终在合并期间丢弃更改。我必须尝试一下,但您可以尝试使用--auto $base $base $base -o $output