Независимый дифференциал VCS

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

изменить: предпочтительны инструменты командной строки (не с графическим интерфейсом).


person Sridhar Ratnakumar    schedule 18.01.2010    source источник


Ответы (3)


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

person RyanWilcox    schedule 18.01.2010
comment
пакет pyvcs не устанавливает никаких скриптов; это только предоставление абстрактного API? - person Sridhar Ratnakumar; 19.01.2010
comment
Спасибо за ссылку на UVC, я обновил свой скрипт, чтобы использовать UVC. - person Sridhar Ratnakumar; 20.01.2010

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

замещающий текст http://img25.imageshack.us/img25/8597/colordiff.png< /а>

Вам понадобится colordiff, который можно установить через apt или macports.

Следующая функция bash позволяет набрать просто `dif' в выбранном вами рабочем каталоге системы контроля версий (нет необходимости указывать, является ли это 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 (git, cvs и т. д.).

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

function dif {
   uvc diff $1 | colordiff | less -R
}
person Sridhar Ratnakumar    schedule 18.01.2010
comment
вы можете свернуть свои операторы test и if: if [ -d .hg ]; then также вы должны сбалансировать свой if с помощью if...elif...else (или использовать оператор case). - person Dennis Williamson; 18.01.2010

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

person Community    schedule 18.01.2010