【问题标题】:Mercurial - Exceptions to internal:local merge-patterns?Mercurial - 内部例外:本地合并模式?
【发布时间】:2011-04-13 21:49:43
【问题描述】:

为了确保我们在合并we useinternal:local时使用某些文件的主干版本:

[merge-patterns]
.hgtags = internal:local
pom.xml = internal:local

似乎在某些情况下,合并不使用本地文件,它实际上合并了来自远程存储库的更改。为什么会发生这种情况?

【问题讨论】:

    标签: mercurial merge


    【解决方案1】:

    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,&lt;name&gt; 可以是任何你想要的;称它为“localFilesOnly”或类似的名称。

    【讨论】:

    • 谢谢 - 你有示例配置吗?不完全确定如何设置此配置..
    • @Marcus - 更新为包含一个示例。您必须为自己的文件调整 [merge-patterns] 部分。
    • 这对于跳过 premerge 是有意义的,但是你如何跳过 premerge 并告诉 mercurial 如果它们是使用本地文件的差异?
    • executable 参数定义应使用 kdiff3 进行合并,args 参数指定将强制 kdiff23 始终采用本地文件或其他文件的参数模式。在上面的示例中,它设置为始终采用“其他”文件(即:合并回的更改),但您可以调整它以始终在合并期间丢弃更改。我必须尝试一下,但您可以尝试使用--auto $base $base $base -o $output
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-18
    • 1970-01-01
    • 2015-12-02
    • 1970-01-01
    • 2012-03-10
    • 1970-01-01
    相关资源
    最近更新 更多