Make mercurial NOT use xcode’s filemerge

high sierraxcode

This is perhaps a question for hg as much as it is for macOS.

I just upgraded to macOS High Sierra(10.13.4) to install Xcode.

Before the upgrade, my mercurial was set up to use kdiff3 as the diff tool and I was happy with it.

After the upgrade, mercurial is now using the file merge tool that comes with xcode. I do not want hg to use the file merge tool and have not done any change for this to happen except install xcode.

The configuration in ~/.hgrc looks as follows

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

[merge-tools]
kdiff3.args = $base $local $other -o $output
pom_merge.priority = -100
pom_merge.premerge = True
pom_merge.args = -o $output $base $local $other
pom_merge.executable = /Users/username/codebases/apm/hg/secondbase/tools/hg-tools/pom_merge.py 

[merge-patterns]
**pom.xml = pom_merge

[extensions]
shelve=
rebase=
purge=
hgext.extdiff=
extdiff=
strip=

[tortoisehg]
vdiff =kdiff3
editor="/Applications/kdiff3.app/Contents/MacOS/kdiff3"

When I run hg config, which is supposed to show the combined settings from all hgrc files, it does the following entries, but I do not know where they come from

merge-tools.filemerge.executable=/Developer/Applications/Utilities/FileMerge.app/Contents/MacOS/FileMerge
merge-tools.filemerge.args=-left $other -right $local -ancestor $base -merge $output
merge-tools.filemerge.gui=True
merge-tools.filemergexcode.executable=/Applications/Xcode.app/Contents/Applications/FileMerge.app/Contents/MacOS/FileMerge
merge-tools.filemergexcode.args=-left $other -right $local -ancestor $base -merge $output
merge-tools.filemergexcode.gui=True

Does any one have any idea how to fix this so I can continue to use kdiff3 as my difftool instead of the xcode file merge?

Best Answer

I don't have Xcode installed, since I don't want to use FileMerge. However, I can spot that the path to your kdiff3 is inside quotes ", and it shouldn't. I tried here and it doesn't work like that.

The necessary configs to the .hgrc file to run kdiff3 as the vdiff tool in Mercurial (TortoiseHg) are:

[extensions]
hgext.extdiff =

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