Как заставить SVN diff выглядеть как diff? - PullRequest
3 голосов
/ 30 марта 2010

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

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

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

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

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

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

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

чтобы увидеть, что происходит. и все это выплевывает, что я вижу, почему diff это не нравится ....

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

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

Ответы [ 2 ]

6 голосов
/ 31 марта 2010

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

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

Таким образом, вы должны просто использовать команду diff, которая удаляет этот флаг перед передачей его в diff вашей системы. Я делаю что-то похожее, чтобы добавить пользовательский набор параметров для 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} "$@"

Это обсуждается более подробно в руководстве под Использование внешних разностных и слияния инструментов .

0 голосов
/ 11 января 2012

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

svn cat $FILE --revision COMMITTED | diff $FILE -
...