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