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

Как вы получаете пейджер в svn diff?

Id, например svn diff, чтобы отобразить цветной diff через пейджер (как это делает git). Ive удалось получить цветной diff, установив diff-cmd в ~/.subversion/config:

diff-cmd = colordiff

Теперь Id нравится транслировать вывод diff через пейджер, как мне это сделать? (Короче говоря, svn diff | less, конечно.)

4b9b3361

Ответ 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
}