command-line - Mercurial 无法通过命令行 merge

标签 command-line merge mercurial

我的 mercurial 安装拒绝通过命令行 merge 。这是我打开后的输出 verbosedebug .

C:\src\StackOverflow>hg resolve --all --verbose --debug
couldn't find merge tool codecompare_diff
couldn't find merge tool codecompare_merge
couldn't find merge tool bcompare
couldn't find merge tool beyondcompare3
couldn't find merge tool beyondcompare3-noauto
couldn't find merge tool rekisa
couldn't find merge tool UltraCompare
couldn't find merge tool araxis
couldn't find merge tool meld
couldn't find merge tool diffuse
picked tool 'kdiff3' for StackOverflow/StackOverflow.csproj (binary False symlink False)
merging StackOverflow/StackOverflow.csproj
my StackOverflow/StackOverflow.csproj@4f4faeac0fea+ other StackOverflow/StackOverflow.csproj@ae29e8c6bb88 ancestor StackOverflow/StackOverflow.csproj@399376fedfc5
The system cannot find the path specified.
merging StackOverflow/StackOverflow.csproj failed!

注意: merge 实际上是成功的(kdiff3 弹出,我 merge 并保存),但 mercurial 很困惑。

我如何确定哪个 path无法通过 Mercurial 找到?

我尝试更新到最新版本 (2.8) 并查看我的 mercurial.ini对于任何可疑文件。我还使用了不同的 merge 工具 p4merge,以达到完全相同的效果。

最佳答案

嗯……其实。

这可能是愚蠢的“解决方案”,但您可以查看 filemerge.py应该与 mercurial 一起提供的文件。
该文件定义了 mercurial 如何进行 merge (调用外部 merge 工具、处理结果等)。

在这里,您会在 filemerge 中看到以下几行功能:

    ui.debug("picked tool '%s' for %s (binary %s symlink %s)\n" %
               (tool, fd, binary, symlink))
    [...]
        ui.status(_("merging %s\n") % fd)

    ui.debug("my %s other %s ancestor %s\n" % (fcd, fco, fca))

他们在您的输出中给出了相应的消息:
picked tool 'kdiff3' for StackOverflow/StackOverflow.csproj (binary False symlink False)
merging StackOverflow/StackOverflow.csproj
my StackOverflow/StackOverflow.csproj@4f4faeac0fea+ other StackOverflow/StackOverflow.csproj@ae29e8c6bb88 ancestor StackOverflow/StackOverflow.csproj@399376fedfc5

然后_xmerge函数是从 filemerge 调用的具有以下几行的功能:
  needcheck, r = func(repo, mynode, orig, fcd, fco, fca, toolconf,
                       (a, b, c, back))

然后是 ui.warn(onfailure % fd)到达行 334或在线 368 (我不知道),它给出了您的最后一条错误消息:
merging StackOverflow/StackOverflow.csproj failed!

介于 ui.debug("my %s other %s ancestor %s\n" % (fcd, fco, fca)) 之间的某处和 ui.warn(onfailure % fd) ui.warn(onfailure % fd)是有原因的实际到达(可能在 _xmerge 中)。你可以尝试通过在filemerge.py的各个地方插入各种调试输出来发现它。文件,然后重试 merge 。这就是我目前所能推荐的(因为我无法在我的机器上重现您的错误和上下文)。

P.S.:正如 santiagopim 所建议的,您可能更喜欢将 WC 复制到干净的 PC 并安装干净的 mercurial 并在那里重试。因为错误很可能是由一些错误配置引起的。但是,如果您更愿意尝试就地解决问题...

关于command-line - Mercurial 无法通过命令行 merge ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20149719/

相关文章:

linux - libxml2 的问题原因(我无法在我的参数中访问...... wifi,蓝牙......)

php - Mysql:在组合列中搜索

javascript - 从 ReactJS 应用程序调用 CMD 命令行

c++ - Win32 C/C++ 检查同一程序的两个实例是否使用相同的参数

database - SQLite 合并重复项

mercurial - 命令行上的 hg merge 在第一个文件 merge 后挂起

mercurial - 通过TortoiseHg进行Mercurial- merge 命名分支,然后将其关闭

version-control - 在 Mercurial 分支之间切换

shell - 当前目录中最后一个文件的全局别名

sql-server - 空值和 MERGE 语句 : I need to set a value to infinity. 如何?