我对svn diff有一个小问题。我真的必须使用这一行:
svn diff -r X:Y path/to/file.ext
这适用于案例file.ext存在于两个版本中。 问题是当它没有 - 我收到消息:
无法在X版本
中找到file.ext的存储库位置
而不是我想得到一个差异字符串,就像他们所有的行被添加/删除一样(像我会用mercurial diff得到的东西)......
有没有办法在SVN中执行?提前谢谢大家!
答案 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
所以我修改了一个文件并删除了两个文件并添加了一个文件。