代码之家  ›  专栏  ›  技术社区  ›  zoul

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

  •  16
  • zoul  · 技术社区  · 15 年前

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

    diff-cmd = colordiff
    

    现在我想把diff输出通过一个寻呼机,我该怎么做呢?(缺少文字) svn diff | less ,当然。)

    3 回复  |  直到 15 年前
        1
  •  14
  •   schot    15 年前

    在过去,我使用了包装器脚本和设置 diff-cmd 对此脚本:

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

    但是如果每个文件都有一个单独的寻呼机,我不确定这是否是你想要的。现在我只是写作 svn diff | less .

    另一个简单的解决方案是生成别名: alias svndiff='svn diff | less' . 或者如果你想用 svn diff

    svn() {
        if [ x"$1" = xdiff ] || [ x"$1" = xdi ]; then
            /usr/bin/svn "$@" | less -r
        else
            /usr/bin/svn "$@"
        fi
    }
    
        2
  •  6
  •   Edson Medina Agata    11 年前

    我通常跑步 svn diff | vim - .

        3
  •  0
  •   Jakob Wachtel    9 年前

    添加

    function sdi ()
    {
        if tty -s; then
                exec svn diff --diff-cmd=colordiff "$@" | less -R
        else
                exec svn diff --diff-cmd=colordiff "$@"
        fi
    }
    

    ~/.bashrc 为我做了这个把戏。取自 here

        4
  •  0
  •   Jake Miller    6 年前

    这本来是一个评论,但我没有足够的代表。一个改进肖特的答案是也失败之前,管道到 less svn 命令会因任何原因而失败,例如,如果指定的文件不存在。它也会传递错误代码。

    这个答案还添加了进度格式:

    编辑:一个额外的批准是当管道/重定向输出不使用色差。要做到这一点,不要改变 ~/.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
    }
    
    推荐文章