2

Given a custom hg merge tool mymergetool.py

On Linux, I can do this:

merge-tools.MyMergeTool.executable=mymergetool.py

which runs the python in a new process.

However on Windows one has to specify python.exe as the executable. But given that one might not exist on the system (I use hg embedded in an application)

I would like to be able to do something like this:

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

which runs the merge tool in the same process as hg.

However when reading hg's filemerge.py it seems that the python: prepend isn't supported in this context.

Is there any other way of providing a custom merge tool that can run in process? (eg. using hooks or extensions)

Reasons why I want to do this

  1. I don't want to ship a python.exe with my application. (minor)
  2. On some systems, (eg. iOS) it hard to launch external processes, so having a custom merge tool run in process would make things a lot easier.
Tom
  • 6,325
  • 4
  • 31
  • 55

1 Answers1

0

This is now possible in Mercurial 4.7 and newer. MergeTool configuration documentation

(Release Notes)

One specifies a python file along with a python function.

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

The function signature is this:

def mergefn(ui, repo, args, **kwargs):
Tom
  • 6,325
  • 4
  • 31
  • 55