Search code examples
xcodegitfilemergeopendiff

git diff with opendiff gives "Couldn't launch FileMerge" error


I have git configured to use ~/bin/opendiff-git.sh as my external diff tool. That script looks like this:

opendiff $2 $5

When I try and do a git diff from the command line, I get this message:

2011-02-18 13:58:55.532 opendiff[27959:60f] exception raised trying to run FileMerge: launch path not accessible
2011-02-18 13:58:55.535 opendiff[27959:60f] Couldn't launch FileMerge
external diff died, stopping at source/some_file.m.

What's going on? This has worked for many months, but stopped working recently.


Solution

  • So AFTER I deleted the beta developer folder to try and solve this (couldn't get the fix to work with merge tool) I stumbled upon this in the command line:

    Error: No developer directory found at /Developer Beta. Run /usr/bin/xcode-select to update the developer directory path.
    

    Turns out you can set the developer path you need it to use:

    Usage: xcode-select -print-path
       or: xcode-select -switch <xcode_folder_path>
       or: xcode-select -version
    Arguments:
       -print-path                     Prints the path of the current Xcode folder
       -switch <xcode_folder_path>     Sets the path for the current Xcode folder
       -version  
    

    Looks like installing the beta had automatically set that path to beta. To fix it, run this:

    sudo /usr/bin/xcode-select -switch /Developer
    

    That fixed it for me.

    Update

    Ying's comment below was important enough to include in the answer. From Xcode 4.3 on, the location of the folder has changed to inside the application package:

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