Search code examples
mercurialconfigtortoisehgargsdifftool

Mercurial & TortoiseHg - args error to config a diff tool?


I'm trying to configure a diff tool in TortoiseHg and Mercurial.

This is the configuratión I've done:

[merge-tools]
CmpIt.executable = E:\Program Files (x86)\Compare It!\wincmp3.exe
CmpIt.priority = 1
CmpIt.premerge = True
CmpIt.gui = True

CmpIt.args= -m $local $base $other
CmpIt.diffargs= -m $local $base
CmpIt.dirdiff= True

But when the tool start, it's looking for "$local" and "$base" files instead real file names.

I found on Task Manager that the command line is geting the names of the args instead their values:

E:\Program Files (x86)\Compare It!\wincmp3.exe -m $local $base

How can I force to pass the value of the args to the command line?


Solution

  • You miss some important points

    1. You must to avoid usage CompareIt! as merge-tool (it still doesn't support 3-way merge): CmpIt.args is BIG NO-NO for now
    2. You have to re-read hgrc.d\MergeTools.rc (of any merge-tool part) for parameters, used in .diffargs, parred by TortoiseHG/Mercurial: $local + $base are variables for merge, not for diff
    3. You have to re-read CompareIt! command-line options: they doesn't mention -m at all

    From my POV, using bcompare.diffargs options as quick-start and CompareIT! Help for "translation", this will reasonably good first iteration (not tested!!!)

    CmpIt.args= -m $local $base $other

    CmpIt.diffargs= $parent /=$plabel1 $child /=$clabel