Question

I'm having problems trying to setup an external diff program for svn on Mac OSX Lion. I have both xxdiff and opendiff installed.

I add these lines to ~/.subversion/config:

diff-cmd = opendiff
diff3-cmd = opendiff

or

diff-cmd = /Applications/xxdiff.app/Contents/MacOS/xxdiff
diff3-cmd = /Applications/xxdiff.app/Contents/MacOS/xxdiff

But when I invoke svn, I get this error:

svn: /Users/tre11/.subversion/config:49: Option expected

How do I fix this problem?

Was it helpful?

Solution

There aren't many diff utilities, aside from the GNU ones of course, that will take the parameters as given by svn (bbdiff is one of the few). You need to wrap the call in a shell script. It's explained in the subversion docs.

Edit Based on your comment that the default text diff is still being run, I think there's an error in your .subversion/config file. That's consistent with your error message. The most likely cause is a space at the beginning of the diff-cmd line. Yes, subversion's parser freaks out at spaces at the beginning of the line. I put a space at the beginning of my diff-cmd line and got the same "Option expected" error.

OTHER TIPS

Here's an example of one I use with MacVIM

#! /usr/bin/env perl

use strict;
use warnings;

use constant DIFF => qw(mvim -d -f);

my $parameters = $#ARGV;
my $file1 = $ARGV[$parameters - 1];
my $file2 = $ARGV[$parameters];
my $title1 = $ARGV[$parameters - 4];
my $title2 = $ARGV[$parameters - 2];

$ENV{TITLE} = "$title1  -   $title2";
system DIFF, '-c', 'let &titlestring=$TITLE', $file1, $file2;

This is a Perl program (but you have Perl on your Mac, so it's okay).

Basically, you have to know the various parameter positions passed to your program. A quick test shows the following parameters were passed:

  1. -u (Unified Diff)
  2. -L (In diff, use the following as the title of the left hand file)
  3. bludgen.pl (revision 63) (Left hand title)
  4. -L (In diff, use the following as the title of the right hand file)
  5. bludgen.pl (working copy) (Right hand title)
  6. .svn/text-base/bludgen.pl.svn-base (Left hand file)
  7. bludgen.pl (right hand file)

More information here.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top