根据服务器,SVN 外部在上次更改版本上标记为“不存在”

SVN external tagged at Last Changed Rev 'doesn't exist' according to server

我正在向 SVN 服务器请求一个保证存在的外部版本,因​​为它是最新修改的版本号。我没有像往常一样获取外部信息,而是收到无法描述的错误。

这是我对特定外部的 svn:externals 定义,我需要在列出的 @revision_number:

/repository/things/myexternal/tags/0.1@18152 myexternalfoldername

我也试过改变这些信息的格式,像这样:

-r18152 /repository/things/myexternal/tags/0.1 myexternalfoldername

我运行svn up拉入外部,但我得到错误:

svn: warning: W200000: Error handling externals definition for 'myexternal': svn: warning: W170000: URL 'svn://svnserver/repository/things/myexternal/tags/0.1' at revision 18152 doesn't exist

我以非常相似的方式指定了另一个外部,但错误消息看起来略有不同,但看似相关:

svn: warning: W160013: File not found: revision 97143, path 'repository/things/myexternal/tags/0.1'

运行 svn info 在任何这些外部路径上给出了这个: Path: myexternal Working Copy Root Path: (my local copy path) URL: /repository/things/myexternal/tags/0.1 Relative URL: ^/things/myexternal/tags/0.1 Repository Root: svn://svnserver/repository Repository UUID: (uuid here) Revision: 97143 Node Kind: directory Schedule: normal Last Changed Author: somedude Last Changed Rev: 18152 Last Changed Date: 2012-04-02 09:55:11 -0700 (Mon, 02 Apr 2012)

注意上次更改修订版字段。这是我要求的修订版,它是有效的。如果我查询它们,它甚至有日志条目。

谁能告诉我这个 svn 服务器请求有什么问题?谢谢!

出于某种原因,我很难找到规范的来源,但我 认为 目录的 "Last Changed Rev" 指的是任何目录中的文件已更改。

因此,您可能处于这样一种情况,其中某些文件在修订版 18152 中更改,有时 1.0 标记创建之后。因此在修订版 18152 中,确实没有指定的路径。

查看 svn log -v 而不是 svn info,您可能会看到该目录是何时创建或从另一个目录复制的。如果不是,则改为在父级上登录。重复直到您看到目录的创建位置。

然后,使用 那个 修订版,而不是 svn info.

中不太有用的 "Last Changed Rev"

根据 Ben 的回答查看标签/文件夹级别的日志,我发现我的外部文件在列出的 'Last Changed Rev' 中确实不完全有效 - 但原因是另一个用户移动了整个文件夹结构在一个点到埋在存储库中的不同位置(事后有效地修改标签,但它没有改变 svn 信息)。混乱!

在这种情况下,svn info 中的 'Last Changed Rev' 变得不可靠,因为没有文件被修改,但文件夹被移动到另一个位置(标签中的提交消息没有给出任何线索)。因此,您最终会在已知的 'moved' 位置找到一个标签,您无需在 'Last Changed Rev' 指定您想要的修订版即可获取该标签——但是当您尝试在该标签外部存在的修订版中检出时在不同级别的文件夹结构中,您会遇到这些错误。

如果我在我的标签修订处签出并引用旧文件位置,它会解析外部文件!