Подтвердить что ты не робот

Как заставить Subversion использовать сторонний инструмент сравнения?

Мне нужно больше, чем стандартный diff! Недавно я купил "Beyond Compare", и я хотел бы интегрировать его с svn, поэтому он запускается при вводе:

svn diff foo.c

Как это сделать?

4b9b3361

Ответ 1

Из Beyond Compare forum post:

/USR/бен/bcompare_svn:

#!/bin/bash
/usr/bin/bcompare $6 $7 &
exit 0

Вызов bcompare очевиден, но мне пришлось добавить "exit 0", чтобы svn открывал несколько файлов за раз.

Чтобы svn вызывал мой script, я добавил следующую строку в раздел [помощники] в ~/.subversion/config

diff-cmd=/usr/bin/bcompare_svn

Ответ 2

Посмотрите на svn --diff-cmd.

Ответ 3

Я бы хотел добавить комментарий к Энди Лестеру, но у меня нет достаточно большой репутации. Тем не менее, я могу ответить на вопрос, я думаю.

В любом случае... как Энди уже заметил, запустите "svn help diff", но просто дайте вам ответ...

svn diff --diff-cmd < diff-cmd > --extensions < diff-cmd options >

svn diff --diff-cmd/usr/bin/diff --extensions "-bca" < имя файла >

Ответ 4

Недавно я добавил инструкции для Subversion в Linux на нашу Использование Beyond Compare With Version Control Systems веб-страницу. После того, как вы выполните шаги по вышеуказанной ссылке, он должен запустить Beyond Compare 3 для Linux, когда вы запускаете "svn diff".

Ответ 5

В последнем Subversion значение script/usr/bin/bcompare_svn должно быть таким:

#!/bin/bash
cp $6 $6.save
cp $7 $7.save
{
    /usr/bin/bcompare $6.save $7.save 
    rm $6.save $7.save
} &
exit 0

или (непроверенный код)

#!/bin/bash
base=`echo $3 | sed -r "s/^([^\(]+)[ \t]+\((.+)\)$/\1.\2/g" | xargs -i% basename "%"`
current=`echo $5 | sed -r "s/^([^\(]+)[ \t]\((.+)\)$/\1.\2/g" | xargs -i% basename "%"`

mv "$6" "/tmp/$base"
mv "$7" "/tmp/$current"
{
    /usr/local/bcompare/bin/bcompare "/tmp/$base" "/tmp/$current"
    rm "/tmp/$base" "/tmp/$current"
} &
exit 0