如何让svn diff看起来像diff?

stu*_*stu 3 svn diff

还有一个问题:如何让diff看起来像svn diff?但我想要完全相反.我正在尝试使用<和>显示svn diff

显而易见的答案是:

svn diff --diff-cmd /usr/bin/diff  file
Run Code Online (Sandbox Code Playgroud)

但当我这样做时,我得到了

/usr/bin/diff: illegal option -- L
Run Code Online (Sandbox Code Playgroud)

所以我这样做

svn diff --diff-cmd /usr/bin/echo  file
Run Code Online (Sandbox Code Playgroud)

看看发生了什么.并且它吐出所有这些,我可以看到为什么diff不喜欢它....

-u -L file (revision 11371) -L file   (working copy) .svn/text-base/file.svn-base file
Run Code Online (Sandbox Code Playgroud)

那么......我如何让svn实际上使用另一个程序来进行差异?

Eth*_*her 6

您的系统上似乎diff安装的版本太旧或与svn想要调用它的方式不兼容.在我的系统中,-L选项是这样定义的:

   -L label
   --label=label
          Use label instead of the file name in the context format and unified format headers.
Run Code Online (Sandbox Code Playgroud)

因此,您应该使用diff命令删除该标志,然后再将其传递给系统的diff.我做了类似的事情,在我的.subversion/configs文件中为diff(和添加颜色)添加一组自定义选项:

diff-cmd=/home/ether/bin/svndiff-w
Run Code Online (Sandbox Code Playgroud)

...程序只是一个简单的shell脚本:

#!/bin/bash
diff=/usr/bin/colordiff
args="-u -wi -U 6 --new-file"    
exec ${diff} ${args} "$@"
Run Code Online (Sandbox Code Playgroud)

使用外部差分和合并工具下的手册中对此进行了更详细的讨论.