1

我已按照http://www.semanticmerge.com/sm-guides/main.shtml#HowtoconfigurewithMercurial上的说明进行操作,但它们是为 kdiff3 配置的,我想使用 p4merge 进行文本合并。我当前的 mercurial.ini 看起来像这样:

[merge-tools]
semantic.executable = C:\Users\JP\AppData\Local\PlasticSCM4\semanticmerge\semanticmergetool.exe
semantic.premerge=False
semantic.binary=False
semantic.args=-b=$base -s=$local -d=$other -r=$output -l=csharp -edt="p4merge.exe ""#sourcefile"" ""#destinationfile""" -emt="p4merge.exe -le 'win' -dl ""#basefile"" ""#sourcefile"" ""#destinationfile"" ""#output"""
semantic.gui=True
semantic.checkconflicts=True

使用我当前的配置,当以 .cs 结尾的文件发生冲突时 SemanticMerge 按预期运行,但是当我在 SemanticMerge 中使用 merge 命令运行文本合并时,我收到一条错误警报,指出:

Error starting P4Merge
Errors: 'c:\directory\1d37-some-guid.tmp' is (or points to) an invalid file.

是不兼容还是我上面的“semantic.args”部分配置不正确?

更新 当我单击特定更改的合并按钮时出现错误。请参阅下面的屏幕截图。答案是正确的,因为我应该使用“运行文本合并”按钮运行文本合并。

合并按钮

4

1 回答 1

1

我刚刚测试了 Semantic Merge-Mercurial 集成(将 p4merge 配置为外部测试合并工具)。

这是我的 mercurial.ini:

[merge-tools]
semantic.executable = C:/Users/carlos/AppData/Local/PlasticSCM4/semanticmerge/semanticmergetool.exe
semantic.premerge=False
semantic.binary=False
semantic.args=-b=$base -s=$local -d=$other -r=$output -l=csharp -edt="p4merge.exe ""#sourcefile"" ""#destinationfile""" -emt="p4merge.exe -le 'win' -dl ""#basefile"" ""#sourcefile"" ""#destinationfile"" ""#output"""
semantic.gui=True
Semantic. checkconflicts=True

当我执行 Hg 合并时,会出现语义合并工具,如果我选择“运行文本合并”,则文本合并工具工作正常。您的问题似乎出在 P4Merge 工具安装中。您可以尝试使用命令行手动启动 P4Merge 工具吗?

在此处输入图像描述

在此处输入图像描述

于 2014-03-21T17:19:07.577 回答