2010-01-18 4 views
4

Вместо запуска «svn diff», «hg diff» и т. Д .. можем ли мы написать одну команду, которая вызывает svn/hg/git соответственно? Можно ли сделать вывод diff?VCS independent diff

Редактировать: использовать инструменты командной строки (не GUI).

+1

Лучше подходит для SO? – Sathya

ответ

3

Ввод «svn diff» или «hg diff» не является забавой, если вам пришлось набирать его снова, чтобы вывести на экран результат меньше. Кроме того, когда вполне вероятно, что ваш текстовый редактор делает подсветку синтаксиса .. нет никакой причины, по которой вывод diff в терминале не должен также выделяться соответствующими цветами.

alt text http://img25.imageshack.us/img25/8597/colordiff.png

Вам потребуется colordiff, который может быть установлен с помощью APT или MacPorts.

Следующая функция bash позволяет ввести только `diff 'в рабочий каталог VCS по вашему выбору (нет необходимости указывать, является ли это hg или svn).

function dif { 
    if [ -d .hg ]; then 
     VC='hg' 
    elif [ -d .svn ]; then 
     VC='svn' 
    else 
     echo "cannot find VC type" 
     return 1 
    fi 
    $VC diff $1 | colordiff | less -R 
} 

Это должно быть легко добавлять поддержку других инструментов VCS (мерзавец, CVS, и т.д ..)

Кроме того, если у вас есть UVC установлены (в соответствии с ответом Райана Вилкоксой), выше сценарий может быть упрощенное как:

function dif { 
    uvc diff $1 | colordiff | less -R 
} 
+2

вы можете свернуть ваши 'test' и' if' statements: 'if [-d .hg]; тогда вы также должны балансировать свое 'if', используя' if ... elif ... else' (или использовать оператор 'case'). –

+0

Thx, я изменил код. –

3

Существует также ряд «обернуть все общие команды VCS в одну утилиту». pyvcs и UVC - это два, которые приходят на ум. Может быть, они будут делать то, что вы хотите?

+0

Пакет 'pyvcs', похоже, не устанавливает никаких скриптов; это только предоставление абстрактного API? –

+0

Ух, но я думаю, ты прав. Виноват. – RyanWilcox

+0

Спасибо за ссылку UVC, я обновил свой сценарий для использования UVC. –

0

Пробег: Diffuse. Он будет определять подходящую систему управления версиями и отображать разницу с красивой подсветкой синтаксиса.