Как вы получаете пейджер в svn diff?
Id, например svn diff
, чтобы отобразить цветной diff через пейджер (как это делает git). Ive удалось получить цветной diff, установив diff-cmd
в ~/.subversion/config
:
diff-cmd = colordiff
Теперь Id нравится транслировать вывод diff через пейджер, как мне это сделать? (Короче говоря, svn diff | less
, конечно.)
Ответы
Ответ 1
В прошлом я использовал обертку script и установил diff-cmd
на этот script:
#!/bin/sh
colordiff "[email protected]" | less -r
Но тогда вы получаете отдельный пейджер для каждого файла, я не уверен, что это то, что вы хотите. В настоящее время я просто пишу svn diff | less
.
Другим простым решением является псевдоним: alias svndiff='svn diff | less'
. Или, если вы хотите использовать svn diff
, выполните функцию оболочки:
svn() {
if [ x"$1" = xdiff ] || [ x"$1" = xdi ]; then
/usr/bin/svn "[email protected]" | less -r
else
/usr/bin/svn "[email protected]"
fi
}
Ответ 2
Обычно я запускаю svn diff | vim -
.
Ответ 3
Добавление
function sdi ()
{
if tty -s; then
exec svn diff --diff-cmd=colordiff "[email protected]" | less -R
else
exec svn diff --diff-cmd=colordiff "[email protected]"
fi
}
к моему ~/.bashrc
помогло. Взято из здесь
Ответ 4
Это был бы комментарий, но мне не хватает представителя. Усовершенствованный ответ schot - это также сбой перед передачей в less
, если команда svn
не выполнена по какой-либо причине, например, если вы укажете несуществующий файл. Он также проходит через код ошибки.
И этот ответ также добавляет формат прогресса:
function svn() {
if [[ "$1" == "diff" && -t 1 ]]; then
output=$(/usr/bin/svn --diff-cmd=colordiff "[email protected]") || return $?
[ "${output}" != "" ] && less -rM +Gg <<< "${output}";
else
/usr/bin/svn "[email protected]"
fi
}