试图在mac上设置svn外部差异程序

时间:2012-03-07 14:49:51

标签: macos svn diff filemerge opendiff

我在尝试在Mac OSX Lion上为svn设置外部差异编程时遇到问题。 我安装了xxdiff和opendiff。

我将这些行添加到〜/ .subversion / config:

diff-cmd = opendiff
diff3-cmd = opendiff

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

但是当我调用svn时,我收到了这个错误:

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

如何解决此问题?

2 个答案:

答案 0 :(得分:1)

除了GNU之外,没有太多的diff实用程序可以采用svn给出的参数(bbdiff是为数不多的)。您需要将调用包装在shell脚本中。它解释了in the subversion docs

修改 根据您的注释,默认文本差异仍在运行,我认为您的.subversion / config文件中存在错误。这与您的错误消息一致。最可能的原因是diff-cmd行开头的空格。是的,subversion的解析器在行开头的空格处吓坏了。我在diff-cmd行的开头添加了一个空格,并得到了相同的“期望选项”错误。

答案 1 :(得分:0)

以下是我与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;

这是一个Perl程序(但你的Mac上有Perl,所以没关系)。

基本上,您必须知道传递给程序的各种参数位置。快速测试显示传递了以下参数:

  1. -u(统一差异)
  2. -L(在差异中,使用以下作为左手文件的标题)
  3. bludgen.pl (revision 63)(左手标题)
  4. -L(在差异中,使用以下作为右手文件的标题)
  5. bludgen.pl (working copy)(右手标题)
  6. .svn/text-base/bludgen.pl.svn-base(左手文件)
  7. bludgen.pl(右手文件)
  8. 更多信息here