Python 自定义 Mercurial 合并工具正在处理中?

Python custom Mercurial merge tool in process?

给定自定义 hg 合并工具 mymergetool.py

在 Linux,我可以这样做:

merge-tools.MyMergeTool.executable=mymergetool.py

其中 运行 是新进程中的 python。

但是在 Windows 上必须指定 python.exe 作为可执行文件。 但是考虑到系统上可能不存在(我使用嵌入在应用程序中的 hg)

我希望能够做这样的事情:

merge-tools.MyMergeTool.executable=python:mymergetool.py

哪个 运行 是与 hg 在同一进程中的合并工具。

然而,在阅读 hg 的 filemerge.py 时,似乎在此上下文中不支持 python: 前缀。

是否有任何其他方法可以提供可以 运行 进行中的自定义合并工具?(例如,使用挂钩或扩展)

我想这样做的原因

  1. 我不想随我的应用程序一起发送 python.exe。 (未成年人)
  2. 在某些系统上(例如 iOS)很难启动外部进程,因此在进程中使用自定义合并工具 运行 会使事情变得容易得多。

这在 Mercurial 4.7 和更新版本中是可能的。 MergeTool configuration documentation

(Release Notes)

一个指定 python 文件以及 python 函数。

merge-tools.MyMergeTool.executable=python:mymergetool.py:mergefn

函数签名是这样的:

def mergefn(ui, repo, args, **kwargs):