我有一个 SVN 仓库。当我最近提交更改时,反映的当前修订号为 620:
Transmitting file data ...
Committed revision 620.
但是,如果我运行,svn info
我会得到以下结果:
Path: .
URL: http://www.site.com.testing/repos/site.com/trunk
Repository Root: http://svn.server/repos/site.com
Repository UUID: a9c3a166-39f6-4cfb-8622-fd24eb11034b
Revision: 584
Node Kind: directory
Schedule: normal
Last Changed Author: bob
Last Changed Rev: 584
Last Changed Date: 2012-03-26 18:32:55 -0400 (Mon, 26 Mar 2012)
因此,提交某些内容会告诉我当前 SVN 存储库是 620,但svn info
会告诉我当前修订版本是 584。同时svn log
显示 584 作为当前(最新)修订版本。
如果我通过 Windows 中的 TortoiseSVN 查看 SVN 日志,它会正确显示修订版 620 作为当前修订版。
我是否遗漏了有关如何svn info
和svn log
工作方面的某些内容?
答案1
svninfo 命令可能会显示当前工作目录的修订版本,而当您提交一个或多个更改的文件时,该提交的输出将显示这些文件的新修订版本。584 将是该文件夹的最后更改/更新修订版本。
尝试在文件夹上运行svn update
,然后重新运行svn info
。它应该会使文件夹的其余部分达到 620
答案2
Subversion 显示您已经签出了修订版 584。该信息直接来自文件.svn/entries
,而不是来自服务器。
这源于 Subversion 的基本设计,即尽可能不从存储库服务器请求信息。做出这一决定是为了让用户在远程工作且没有与存储库服务器的网络连接时能够使用 Subversion 的强大功能。
- 如果您
svn info
对刚刚提交的文件之一执行操作,则会看到该文件的修订版本为 620。 - 如果您执行了
svn info http://www.site.com.testing/repos/site.com/trunk
,您将看到最后的修订是修订版 620,因为它正在与服务器对话。 - 如果您先执行了 a
svn update
然后再执行 asvn info
,您会看到您的工作目录位于修订版 620。
只是一个简单的问题:您提交了几个文件,还是提交了整个工作目录?如果您在提交中指定了更改的文件,那么这将是有意义的。Subversion 不会知道更新.svn/entries
工作目录根目录中的文件。但是,即使我提交了所有更改,我也看到了这种情况。每当我提交所有更改时,我都会执行 svn up。
记住:这不是一个错误,这是一个功能。