如何让svn diff看起来像diff?

时间:2010-03-30 19:44:10

标签: svn diff

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

显而易见的答案是:

svn diff --diff-cmd /usr/bin/diff  file

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

/usr/bin/diff: illegal option -- L

所以我这样做

svn diff --diff-cmd /usr/bin/echo  file

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

-u -L file (revision 11371) -L file   (working copy) .svn/text-base/file.svn-base file

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

2 个答案:

答案 0 :(得分:6)

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

   -L label
   --label=label
          Use label instead of the file name in the context format and unified format headers.

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

diff-cmd=/home/ether/bin/svndiff-w

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

#!/bin/bash
diff=/usr/bin/colordiff
args="-u -wi -U 6 --new-file"    
exec ${diff} ${args} "$@"

这在Using External Differencing and Merge Tools下的手册中有更详细的讨论。

答案 1 :(得分:0)

我在--diff-cmd选项中遇到同样的错误,这就是我强行正确使用/usr/bin/diff的方式:

svn cat $FILE --revision COMMITTED | diff $FILE -