还有另一个问题:如何让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实际上使用另一个程序进行差异化?
答案 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 -