Q:

How to Set TortoiseHG on Mac to diff with 2 parents?

Here is my settings file:
[extensions]
hgext.extdiff =

[extdiff]
cmd.kdiff3 = /Applications/kdiff3.app/Contents/MacOS/kdiff3

[tortoisehg]
vdiff = kdiff3

[ui]
merge = kdiff3

[merge-tools]
kdiff3.executable = /Applications/kdiff3.app/Contents/MacOS/kdiff3
kdiff3.args = $base $local $other -o $output
kdiff3.priority = 1

On merge files, when I press Cmd + D, it's showing only 2 way diff with the local parent, even if the List Options is set to Changed by This Commit. In Windows, when I press Ctrl + D, its showing 3-way diff with 2 parents even if I didnt change anything on the settings.
How can I set TortoiseHG on Mac to show 3-way diff on merge files when I press Cmd + D? I'm using TortoiseHG 3.9.0

A:

Some readthedocs quotes

In TortoiseHg 1.0, the visual (external) diff infrastructure was
  refactored. The new system uses tool descriptions in mergetools.rc to
  detect most common diff tools on your computer (including KDiff3,
  which ships in our installer) and select the best available tool.

Since 1.0, dude!!! ExtDiff isn't mandatory for any merge|diff tool(even custom, while kdiff3 is shipped with THG)

The visual diff system will use any existing extdiff configuration
  it finds. Since extdiff did not support three way diff arguments
  until very recently and still does not support label arguments, you
  will likely have a better experience by disabling or deleting any
  extdiff configuration you may have.

Not mutilated by hand default KDiff3 config (from hgrc.d\MergeTools.rc in Windows) do all tasks properly
kdiff3.args=--auto --L1 base --L2 parent1 --L3 parent2 $base $local $other -o $output
kdiff3.regkey=Software\KDiff3
kdiff3.regkeyalt=Software\Wow6432Node\KDiff3
kdiff3.regappend=\kdiff3.exe
kdiff3.fixeol=False
kdiff3.premerge=False
kdiff3.gui=True
kdiff3.priority=-3
kdiff3.diffargs=--L1 '$plabel1' --L2 '$clabel' $parent $child
kdiff3.diff3args=--L1 '$plabel1' --L2 '$clabel' --L3 '$plabel2' $parent1 $child $parent2
kdiff3.dirdiff=True

(note diffargs + diff3args options). From the above source

the extra keys used by TortoiseHg for visual diff:
diffargs:  the arguments to use for two-way file comparisons
diff3args: the arguments to use for three-way file comparisons

...
  If unconfigured, the default value of diffargs is ‘$parent $child’.
  The default value of diff3args is “”, indicating the visual diff tool
  cannot perform three way comparisons.

but three way comparisons are the must for mergesets, and your misconfiguration is source of troubles on MacOS's instance of TortoiseHG

