你如何在svn diff中获得一个寻呼机?

时间:2010-09-08 06:30:21

标签: svn diff

我希望svn diff通过寻呼机显示彩色差异(就像git一样)。通过在diff-cmd中设置~/.subversion/config

,我成功地获得了彩色差异
diff-cmd = colordiff

现在我想通过寻呼机管道差异输出,我该怎么做? (当然,没有写svn diff | less。)

4 个答案:

答案 0 :(得分:14)

过去我使用过包装器脚本并将diff-cmd设置为此脚本:

#!/bin/sh
colordiff "$@" | less -r

但是你会为每个文件获得一个单独的寻呼机,我不确定这是否是你想要的。现在我只写svn diff | less

另一个简单的解决方案是制作别名:alias svndiff='svn diff | less'。或者,如果您想使用svn diff,请创建一个shell函数:

svn() {
    if [ x"$1" = xdiff ] || [ x"$1" = xdi ]; then
        /usr/bin/svn "$@" | less -r
    else
        /usr/bin/svn "$@"
    fi
}

答案 1 :(得分:6)

我经常运行svn diff | vim -

答案 2 :(得分:0)

添加

~/.bashrc

到我的{{1}}为我做了诀窍。取自here

答案 3 :(得分:0)

这本来是评论,但我没有足够的代表。 schot答案的一个改进是,如果less命令由于任何原因失败(例如,如果您指定了不存在的文件),则在管道传输到svn之前也会失败。它还会通过错误代码传递。

此答案还添加了进度格式:

编辑:管道/重定向输出不使用colordiff时,需要额外批准。为此,请不要更改~/.subversion/config,而我们需要使用--diff-cmd选项。

function svn() {
    if [[ "$1" == "diff" && -t 1 ]]; then
        output=$(/usr/bin/svn --diff-cmd=colordiff "$@") || return $?
        [ "${output}" != "" ] && less -rM +Gg <<< "${output}";
    else
        /usr/bin/svn "$@"
    fi
}