如何在工作副本和任意转发之间找到svn diff?

时间:2010-03-04 01:29:08

标签: linux svn command-line diff

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

编辑:对不起,我一定是不正当地使用“工作副本”一词。我需要将我未提交的更改与它们所基于的修订版进行比较。换句话说,我检查了修订版1000并更改了文件foobar。转速现在高达1015,但我需要将我的foobar版本与版本1000的版本进行比较。是否有一个简单的命令来执行此操作(比较我的修改后的副本程序与过去的修订版)?

3 个答案:

答案 0 :(得分:13)

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

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

更多信息svn help diff ...

答案 1 :(得分:9)

svn diff采用-rN:M参数,默认为N == BASEM == working copysvn 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)
...

我相信这就是你所追求的,是吗?

答案 2 :(得分:0)

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

svn diff | grep 'Index: ' .