我希望svn diff
通过寻呼机显示彩色差异(就像git一样)。通过在diff-cmd
中设置~/.subversion/config
:
diff-cmd = colordiff
现在我想通过寻呼机管道差异输出,我该怎么做? (当然,没有写svn diff | less
。)
答案 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)
答案 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
}