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

如何在使用svn diff时不获取上下文,svn,command-line,diff,Svn,Command Line,Diff,当我在命令行中使用“svn diff”时,它会打印出已更改的行以及上下文前后的3行未更改的行。我更喜欢只看到改变了的台词,没有背景。我还不能确定任何命令行选项,让我这样做。默认情况下,标准的“diff”和“cvs diff”执行我想要的操作。当然“svn diff”可以做到这一点,但我遗漏了一些东西。有人知道怎么做吗?似乎得出结论,您应该使用外部diff命令来控制上下文的数量 我喜欢统一的diff,所以我的手指总是打字 svn diff -x -u 这意味着使用了一个外部(GNU diff)命

当我在命令行中使用“svn diff”时,它会打印出已更改的行以及上下文前后的3行未更改的行。我更喜欢只看到改变了的台词,没有背景。我还不能确定任何命令行选项,让我这样做。默认情况下,标准的“diff”和“cvs diff”执行我想要的操作。当然“svn diff”可以做到这一点,但我遗漏了一些东西。有人知道怎么做吗?

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

我喜欢统一的diff,所以我的手指总是打字

svn diff -x -u

这意味着使用了一个外部(GNU diff)命令。

您可以将“svn diff”的结果通过管道传输到grep,并编写一个正则表达式来获得所需的结果。例如,尝试以下方法:

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

上面的命令获取以“+”或“-”或“\”开头的所有行。(如果希望看到差异,如“\n文件末尾没有换行符”,则需要使用“\”)

在查看了上面由unwind提供的有用链接后,简短的回答是svn的内置差异不能满足我的要求。您可以告诉它使用标准的外部差异,并将参数传递给它,告诉它您不需要上下文。我在我的.bashrc中添加了以下别名,如果改用它,现在一切都可以正常工作了:

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

上面的建议仍然生成上下文格式,但上下文为0行。这仍然不是subversion之前的传统差异输出

对我有效的是:
svndi--diff cmd=diff-x--normal


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

感谢您提供了有用的链接。令我惊讶的是,内置的diff不能满足我的需求。在我看来,这似乎违反了Unix要求的输出最少的原则。使用-x-u命令可以得到与否相同的结果。”svn help diff'告诉我这些是默认值。也许您根本不需要键入额外的字符?
-x
svn diff
的扩展参数,它会导致紧跟其后的令牌(此处
-U0
)被传递到使用
--diff cmd
指定的diff命令(此处
diff
)中。如果您只需要更改的行,这可以正常工作。但是,它无法输出有关行号的正确信息。例如,在前后三行上下文中,“@-21,7+21,7@”表示第24行已更改。如果没有上下文,您将看到“@-24,1+24,1@”