2010-03-30 4 views
3

Есть еще один вопрос: как сделать diff похожим на svn diff? но я хочу прямо противоположное. Я пытаюсь получить SVN диф для отображения с < и>как сделать svn diff выглядеть как diff?

Очевидным ответом будет:

svn diff --diff-cmd /usr/bin/diff file 

но когда я делаю, что я получаю

/usr/bin/diff: illegal option -- L 

Так я это делаю

svn diff --diff-cmd /usr/bin/echo file 

чтобы посмотреть, что происходит. и выкладывает все это, что я могу понять, почему разница не нравится ....

-u -L file (revision 11371) -L file (working copy) .svn/text-base/file.svn-base file 

Итак ... как я делаю SVN на самом деле использовать другую программу для сравниваете?

ответ

6

У вас, кажется, есть версия diff, установленная в вашей системе, которая является слишком старой или несовместимой с тем, как svn хочет ее называть. В моей системе, опция -L определяется таким образом:

-L label 
    --label=label 
      Use label instead of the file name in the context format and unified format headers. 

Таким образом, вы должны просто использовать команду дифф, которая удаляет этот флаг перед передачей его вместе с дифф вашей системы. Я делаю что-то подобное, чтобы добавить пользовательский набор опций для Diff (и добавить цвета), в моем .subversion/configs файле:

diff-cmd=/home/ether/bin/svndiff-w 

... где программа просто простой скрипт:

#!/bin/bash 
diff=/usr/bin/colordiff 
args="-u -wi -U 6 --new-file"  
exec ${diff} ${args} "[email protected]" 

Это более подробно описано в руководстве под номером Using External Differencing and Merge Tools.

0

я получаю ту же ошибку с опцией --diff-cmd, это то, как я мог заставить правильное использование моего /usr/bin/diff:

svn cat $FILE --revision COMMITTED | diff $FILE - 
Смежные вопросы