用vimdiff 作为svn diff 的代码比较工具。

用vimdiff 作为svn diff 的代码比较工具。

甲: 了解一下svn diff 的真实面目
    1. svn diff test.c, 实际上会调用diff 命令,并传递8个命令参数。如下:
    diff                    # diff-cmd
    -u                     # extentions, 若无extentions, 用-u 参数
    -L test.c(revision 4420)        # -L 标志和第一个文件标签
    -L test.c(working copy)            # -L 标志和第二个文件标签
    .svn/tmp/tempfile.tmp            # 第一个文件
    test.c                    # 第二个文件

乙:怎样改变diff-cmd 命令
    所以,用 svn diff --diff-cmd vimdiff test.c 不会成功。
    E282: Cannot read from "-L"
    Press ENTER or type command to continue

    而如下方式可以成功:
    只取其中的第7个和第8个参数,再传给vimdiff,这样就能解决参数多的问题了。

    1. 编写sh 脚本:
    gitserver@gitserver-desktop:/usr/local/bin$ cat mydiff.sh
    #!/bin/bash
    shift 5
    # 使用vimdiff比较
    vimdiff "$@"

    2. 执行命令行命令:
        svn diff --diff-cmd mydiff.sh test.c

丙:更好的实现方式:
    在svn 的配置文件中修改diff 的默认命令,这样就不用每次指定diff-cmd 命令了。
    修改~/.subversion/config,找到如下配置行:
    # diff-cmd = diff_program (diff, gdiff, etc.)
    将上面那个脚本的路径添加进去就行,例如修改为
    diff-cmd = /usr/local/bin/mydiff.sh

enjoy it! you will find more.


你可能感兴趣的:(#,svn和git,svn,工具,脚本,command)