SVN diff命令结果不一致

4

问题: 在整个代码库上执行svn diff命令时,其结果与在单个文件上执行时似乎不一致。

例如: 考虑Apache Tomcat源代码的r542208提交。

svn log -v -r r542208 http://svn.apache.org/repos/asf/

结果:

------------------------------------------------------------------------
r542208 | fhanik | 2007-05-28 13:39:15 +0200 (H, 28 máj. 2007) | 2 lines
Changed paths:
   M /tomcat/trunk/java/org/apache/catalina/connector/CometEventImpl.java
   M /tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java
   M /tomcat/trunk/java/org/apache/catalina/connector/Request.java
   M /tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java
   M /tomcat/trunk/java/org/apache/coyote/http11/Http11NioProtocol.java

Implement setTimeout using an Action instead of an attribute

------------------------------------------------------------------------

现在让我们考虑源文件/tomcat/trunk/java/org/apache/catalina/connector/Request.java。执行存储库范围的差异分析提供一些结果。
svn diff -r r542207:r542208 http://svn.apache.org/repos/asf/tomcat

以下是与Request.java相关的部分结果:

===================================================================
--- trunk/java/org/apache/catalina/connector/Request.java       (revision 542207)
+++ trunk/java/org/apache/catalina/connector/Request.java       (revision 542208)
@@ -2259,6 +2259,9 @@

     // ------------------------------------------------------ Protected Methods

+    protected void action(ActionCode actionCode, Object param) {
+        coyoteRequest.action(actionCode,param);
+    }

     protected Session doGetSession(boolean create) {

还有其他部分的结果。

但是如果我们仅对该文件执行diff命令,结果将为空。

svn diff -r r542207:r542208 http://svn.apache.org/repos/asf/tomcat/trunk/java/org/apache/catalina/connector/Request.java

我期望得到与上述引用相同的结果。

另外,当列出源文件该版本时,上述指示的3个新行丢失了,但上下行存在,这也很奇怪。

问题:是什么导致了这种奇怪的行为?是否有任何设置将SVN的基础映射到其他目录(例如分支)?或者可能稍后的目录重命名导致了这个问题?

1个回答

5

哎呀,您遭受了“Peg修订谬误”的困扰。在某个时候,文件Request.java被另一个同名文件替换了。因此,在查询仓库时,您需要确保同时指定正确的peg revision,这可以通过将@revision附加到相关路径来完成。因此,以下命令将不会产生任何结果(正如您所报告的)。

svn diff -r r542207:r542208 http://svn.apache.org/repos/asf/tomcat/trunk/java/org/apache/catalina/connector/Request.java

但是如果您添加了正确的固定版本,您将会看到预期的更改:

svn diff -r r542207:r542208 http://svn.apache.org/repos/asf/tomcat/trunk/java/org/apache/catalina/connector/Request.java@542207

原始的Request.java文件被删除的版本是573772,在该版本中整个代码库被删除并替换为另一个代码库。更多信息请参见http://svnbook.red-bean.com/en/1.8/svn.advanced.pegrevs.html


太好了,问题解决了!非常感谢!(由于声望值较低,我无法投票支持。) - Csaba Faragó

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接