2012-03-07 4 views
0

Mac OSX Lion에서 svn 용 외부 diff 프로그램을 설정하는 데 문제가 있습니다. xxdiff와 opendiff가 모두 설치되어 있습니다.Mac에서 svn 외부 diff 프로그램을 설정하려고합니다.

나는이 라인을 추가하려면 ~/.Subversion은/구성 :

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 

어떻게 이 문제를 해결할 수 있습니까?

답변

1

물론 diff 유틸리티가 많이 있지만, GNU는 물론 svn (bbdiff는 소수 중 하나임)에 의해 주어진 매개 변수를 사용합니다. 호출을 쉘 스크립트로 랩핑해야합니다. 설명은 in the subversion docs입니다. 기본 텍스트 DIFF가 여전히 실행되고 있다는 의견을 바탕으로

편집 , 나는 당신의 .Subversion은/config 파일에 오류가 있다고 생각. 오류 메시지와 일치합니다. 가장 큰 원인은 diff-cmd 행 시작 부분의 공백입니다. 예, Subversion의 파서는 줄 시작 부분의 공백에 빠져 있습니다. 내 diff-cmd 라인의 시작 부분에 공백을 넣었으며 "Option expected"오류가 발생했습니다.

+0

나는 그것을 보았다. 그러나 나는 아직도 svn에서 작동하도록 고심하고있다. 'svn diff'를 할 때 여전히 기본 텍스트 diff를 사용합니다. – Eddy

+0

내 문제가 무엇인지 알아 냈습니다. diff-cmd 줄 앞에 공백이있었습니다. : P – Eddy

+1

그게 내 대답을 받아들이는 것을 고려하고 싶을 수도있는 당신의 문제라고 제안했기 때문입니다. – SSteve

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; 

이 펄 프로그램입니다 함께 사용하는 하나의 예입니다 (하지만 괜찮아, 그래서 당신은 Mac에서 펄이).

기본적으로 프로그램에 전달되는 다양한 매개 변수 위치를 알아야합니다. 빠른 테스트는 다음과 같은 매개 변수가 전달되었습니다 보여줍니다 :

  1. -u (DIFF를 통합)
  2. -L
  3. bludgen.pl (revision 63) (왼손 제목) (차이에서 왼쪽 파일의 제목으로 다음을 사용)
  4. -L
  5. bludgen.pl (working copy) (오른손 제목)
  6. (차이에서 오른쪽 파일의 제목으로 다음을 사용)(왼손 파일)
  7. bludgen.pl (오른쪽 파일)

더 많은 정보 here.