SVN:获取这些修订中不存在的文件的差异(添加或删除)

时间:2012-02-29 17:29:24

标签: svn version-control diff

我对svn diff有一个小问题。我真的必须使用这一行:

svn diff -r X:Y path/to/file.ext

这适用于案例file.ext存在于两个版本中。 问题是当它没有 - 我收到消息:

  

无法在X版本

中找到file.ext的存储库位置

而不是我想得到一个差异字符串,就像他们所有的行被添加/删除一样(像我会用mercurial diff得到的东西)......

有没有办法在SVN中执行?提前谢谢大家!

4 个答案:

答案 0 :(得分:0)

我很确定你不能在文件级别区分目录结构更改。

答案 1 :(得分:0)

问题可能是您的存储库的修订版 X 中不存在此文件。

现在,您可能会在修订版 X 中看到文件path/to/file.ext,而对于您的凡人眼睛来说,它看起来就像是同一个文件。但是,Subversion意识到虽然文件可能具有相同的名称,但它可能不是确切的文件。例如,如果有人在更高版本中删除了该文件,然后重新添加该文件,则该文件将具有相同的名称和目录,但它不是该文件的早期版本。

您需要在URL中指定peg修订版。假设您正在尝试比较修订版1001和2004:

 $ svn diff http://server/svn/path/to/file.ext@1001 \
     http://server/svn/path/to/file.ext@2004

这将对版本1001和2004的http://server/svn/path/to/file.ext处的任何文件进行区分 - 即使它们不是,根据Subversion,同一文件。

答案 2 :(得分:0)

只要我发现这是不可能的,所以我解析了错误并以编程方式完成了差异。

答案 3 :(得分:0)

Svn diff将在文件中显示diff。 但是,如果您想查看对目录结构进行了哪些更改 svn st是你应该使用的。

EX:

D:\FZPCppwc>svn st
M       aam\dm\adaptor\Aal2AlarmReporter.C
!       aam\stacks\sscop\Sscop2.H
!       aam\stacks\sscop\Stc.cpp
A       aam\stacks\sscop\Test.cpp

所以我修改了一个文件并删除了两个文件并添加了一个文件。