svn info 命令点击我的 svn 服务器以查找服务器修订号?

svn info command hit my svn server to find the server revision number?

我怀疑我在我的机器上运行 svn info 命令,hits/requests 我的 svn 服务器?或者它只是在本地找到 ServerRevision 和本地修订版?

这里是svn info的输出供参考:

Path: ....
URL: https://....
Repository Root: https://...
Repository UUID: ....
Revision: 1787
Node Kind: directory
Schedule: normal
Last Changed Author: ....
Last Changed Rev: 1785
Last Changed Date: 2015-01-06 07:44:21 -0600 (Tue, 06 Jan 2015)

1787是怎么进来的? 如果他们向我的服务器发送请求,它会在我每次运行命令时请求吗?或者它只在必要时发送请求?

最后一次修订存储在本地 svn 存储库缓存中。当您 运行 svn info 时没有请求发送到服务器。当您 运行 svn update 时,将下载修订版。因此,它可能不是最新的。

如果我们关闭网络,svn info仍然有效。观察:

dionyziz@erdos ~/valgrind % ping google.com
ping: cannot resolve google.com: Unknown host
dionyziz@erdos ~/valgrind % svn info|grep Rev
Revision: 14853
Last Changed Rev: 14853
dionyziz@erdos ~/valgrind % svn update
Updating '.':
svn: E670008: Unable to connect to a repository at URL 'svn://svn.valgrind.org/valgrind/trunk'
svn: E670008: Unknown hostname 'svn.valgrind.org'

如您所见,svn info 可以在没有网络连接的情况下工作,但 svn update 则不能。这表明数据缓存在本地。

确实,让我们看看SVN的元目录.svn。这包含一个 SQLite 数据库,其中包含提取最新修订版所需的所有信息:

dionyziz@erdos ~/valgrind/.svn % sqlite3 wc.db
SQLite version 3.8.5 2014-08-15 22:37:57
sqlite> SELECT revision FROM nodes ORDER BY revision DESC LIMIT 1;
14853