使用svn diff时如何获取无上下文

时间:2009-10-16 13:01:12

标签: svn command-line diff

当我从命令行使用'svn diff'时,它打印出已更改的行,但也打印出上下文之前和之后的3个未更改的行。我更喜欢只看到没有上下文的更改行。我无法确定任何命令行选项,让我让它以这种方式运行。标准'diff'和'cvs diff'默认执行我想要的操作。当然'svn diff'可以做到这一点,但我错过了一些东西。谁知道怎么做?

4 个答案:

答案 0 :(得分:19)

在通过展开查看上面给出的有用链接之后,简短的回答是svn的内置差异无法做到我想要的。您可以告诉它使用标准的外部差异,并将arg传递给它,告诉它您不需要上下文。我在.bashrc中添加了以下别名,如果我使用它,现在一切正常:

alias svndiff='svn diff --diff-cmd=diff -x -U0'

答案 1 :(得分:7)

上面的建议仍然会产生上下文格式,但有0行上下文。这仍然不是颠覆之前的传统差异输出。

对我有用的是:svn di --diff-cmd=diff -x --normal

--normal选项(在OSX附带的差异中)提供了一些人喜欢的传统格式。

答案 2 :(得分:3)

你可以将'svn diff'的结果传递给grep并编写一个正则表达式来获得你想要的东西。例如,试试这个:

svn diff | grep "^[+-\]"

以上命令可以获取以“+”或“ - ”或“\”开头的所有行。 (如果你想看到诸如“\文件末尾没有换行符”之类的差异,你需要'\'。)

答案 3 :(得分:2)

This thread似乎得出结论,你应该使用外部diff命令来控制上下文的数量。

我更喜欢统一的差异,所以我的手指总是输入

svn diff -x -u

这意味着我会使用外部(GNU diff)命令。