External diff tool FileMerge don't start when I press the "Diff Externe" button.
Asked by Patrick Jeanson:

External diff tool FileMerge don't start when I press the "Diff Externe" button. Other external diff tools works correctly such as DiffMerge, but I had to add a softlink.

For FileMerge tool, nothing is modifiable when we select it. Adding a softlink did not improve the situation:

sudo ln -sf /Developer/Applications/Utilities/FileMerge.app/Contents/MacOS/FileMerge /usr/bin/FileMerge

This trick worked file for diffmerge but not for FileMerge.

Here are the details of the links I did:

<br />

lrwxr-xr-x 1 root wheel 59 12 f?v 10:18 /usr/bin/diffmerge -\> /Applications/DiffMerge.app/Contents/Resources/diffmerge.sh  
lrwxr-xr-x 1 root wheel 72 13 f?v 19:51 /usr/bin/filemerge -\> /Developer/Applications/Utilities/FileMerge.app/Contents/MacOS/FileMerge  
lrwxr-xr-x 1 root wheel 72 13 f?v 19:51 /usr/bin/FileMerge -\> /Developer/Applications/Utilities/FileMerge.app/Contents/MacOS/FileMerge

Thanks for your help.


Answers:
author: Patrick Jeanson
body: Thanks for the tip about opendiff as the name.

I ran opendiff on a command line and got:

Mac-mini-de-Patrick:\~ patrickjeanson$ opendiff  
xcode-select: Error: No Xcode folder is set. Run xcode-select -switch \<xcode_folder_path\> to set the path to the Xcode folder.  
Error: /usr/bin/xcode-select returned unexpected error.

So I did the following command on a terminal:

Mac-mini-de-Patrick:\~ patrickjeanson$ sudo xcode-select -switch /Developer  
Password:  
Mac-mini-de-Patrick:\~ patrickjeanson$ opendiff  
2012-02-14 18:43:14.542 opendiff\[31684:10f\] too few arguments  
2012-02-14 18:43:14.547 opendiff\[31684:10f\] usage: opendiff file1 file2 \[-ancestor ancestorFile\] \[-merge mergeFile\]

Bingo!

I set the right parameters in SourceTree and the diff was launched properly.

ie. opendiff $BASE $LOCAL

Thanks to all.

Patrick.

comments: author: stevestreeting
body: Thanks, I'll add this to the Knowledge Base too.


author: laguiz
body: Quick tips : I just had to run \`sudo opendiff\` and then accept the license. After opendiff open properly.

SourceTree 1.9.8

XCode 6.0.1

comments: author: Becca Owens
body: Thank you, this worked great for me.


author: Matt
body: Worked for me as well. Thank you!


author: Christopher Prince
body: When I do \`sudo opendiff\` at the command line, I get:

xcode-select: error: tool 'opendiff' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance

comments: author: Justin Vallely
body: You need to install Command Line Tools in Xcode Preferences -\> Locations (as of Xcode 10.2.1)


author: badlydrawnrob
body: I've been struggling with this as well --- seems it's a problem with other apps, I followed the instructions here <http://www.gitboxapp.com/>

It doesn't come pre-installed with Command Line tools, install them under Xcode preferences then:

```
sudo /usr/bin/xcode-select -switch /Applications/Xcode.app/Contents/Developer
```

That seems to do the trick!


author: stevestreeting
body: SourceTree actually needs to use the command line tool for FileMerge, which is called 'opendiff'. This should have been installed when you installed XCode, it usually lives in /usr/bin/opendiff.

comments: author: stevestreeting
body: OK, I think they moved it to /Developer/usr/bin/opendiff. Probably the best way to resolve this is to add /Developer/usr/bin to your /etc/paths - or you could symlink opendiff to somewhere on one of your existing paths.


author: stevestreeting
body: Hmm, actually I wonder whether this is installed if you've only ever installed XCode from the Mac App Store. If it's missing, that would explain things, but I wonder where it's gone in that case.


author: Jonathan Ferguson
body: I also needed to run

```
sudo opendiff
```

as Xcode was complaining that I'd not agreed to the license. After this File Merge worked as expected.

Thank you.


Tags: diff

external