Linux 如何找到工作副本和任意版本之间的svn差异?

Linux 如何找到工作副本和任意版本之间的svn差异?,linux,svn,command-line,diff,Linux,Svn,Command Line,Diff,我正试图为一个开源项目编写一个多文件修补程序,但自从我开始工作以来,主副本已经发生了变化。我需要得到我的未提交版本和检查它的版本之间的SVN差异(只是版本控制下的文件)。我可以使用哪个SVN命令来查找差异 编辑:对不起,我一定是用错了“工作副本”这个词。我需要将未提交的更改与它们所基于的修订进行比较。换句话说,我签出了修订版1000并更改了文件foo和bar。版本号现在达到1015,但我需要将我的foo和bar版本与1000版进行比较。是否有一个简单的命令来执行此操作(将我修改过的程序副本与以前

我正试图为一个开源项目编写一个多文件修补程序,但自从我开始工作以来,主副本已经发生了变化。我需要得到我的未提交版本和检查它的版本之间的SVN差异(只是版本控制下的文件)。我可以使用哪个SVN命令来查找差异


编辑:对不起,我一定是用错了“工作副本”这个词。我需要将未提交的更改与它们所基于的修订进行比较。换句话说,我签出了修订版1000并更改了文件
foo
bar
。版本号现在达到1015,但我需要将我的
foo
bar
版本与1000版进行比较。是否有一个简单的命令来执行此操作(将我修改过的程序副本与以前的版本进行比较)?

svn diff
采用一个
-rN:M
参数,该参数默认为
N==BASE
M==工作副本
。将
svn diff-r REV
其中
REV
是您不想使用的版本吗

要回答您的编辑,请假设您具有以下内容:

$ ls
foo bar baz
$ svn st -u
Status against revision:    1071
$ echo "more stuff" >> foo
$ svn diff -r 1000 foo
Index: foo
===================================================================
--- foo  (revision 1000)
+++ foo  (working copy)
...

我相信这就是您想要的,是吗?

您可以使用-rN:M参数和diff命令来指定要比较的修订。只需提供签出工作副本的版本(您可以省略M,因为它默认为工作副本),您就可以得到所需的内容

如果您不记得原始修订号,请尝试运行
svn status-v
,第一列应该会显示它


更多信息
svn help diff
..

如果您的目标是仅获取内容已更改的文件名的报告,那么这应该可以做到:

svn diff | grep 'Index: ' .

我相信你正确地使用了“工作副本”一词。当您签出rev 1000时,您的工作副本就是rev 1000的副本。基数是1015并不重要。您只需将N(通常是base)指定为1000,因为几乎所有命令都默认为base。所以svn diff-r1000应该可以完美地为您工作(假设您真的检查了rev 1000)。如果你检查差异本身,它会说它比较了什么版本(正如ezpz在回答中所示)