我想知道我的服务器是否正在运行Subversion 1.5。

我怎么才能知道呢?

也将很高兴知道我的SVN客户端版本号。SVN的帮助没有帮助。

注意:我不想要我的项目的修订号等。这个问题是关于Subversion软件本身的。


当前回答

让我们把这些回答合并起来:

对于存储库/服务器(原始问题):

如果能够访问Subversion服务器:

根据Manuel之前的回答,在SVN服务器上运行以下命令: svnadmin——版本

HTTP/HTTPS访问:

See the "powered by Subversion" line when accessing the server via a browser. Access the repository via browser and then look for the version string embedded in the HTML source. From earlier answers by elviejo and jaredjacobs. Similarly, from ??, use your browser's developer tools (usually Ctrl + Shift + I) to read the full response. This is also the easiest (non-automated) way to deal with certificates and authorization - your browser does it for you. Check the response tags (these are not shown in the HTML source), from an earlier answer by Christopher wget -S --spider 'http://svn.server.net/svn/repository' 2>&1 | sed -n '/SVN/s/.*\(SVN[0-9\/\.]*\).*/\1/p'

如果svn://或ssh+svn access

来自Milen之前的回答 Svnserve——version(在SVN服务器上运行) 这是格伦之前的回答 SSH user@host svnserve——version

如果GoogleCode SVN服务器

    Check out the current version in a FAQ: 
    http://code.google.com/p/support/wiki/SubversionFAQ#What_version_of_Subversion_do_you_use?

如果是另一台自定义SVN服务器

    TBD

请编辑完成这个回答

对于客户(不是原来的问题):

svn --version

其他回答

对于Subversion 1.7及以上版本,服务器不提供指示服务器版本的页脚。但是您可以运行以下命令从响应头中获取版本

$ curl -s -D - http://svn.server.net/svn/repository
HTTP/1.1 401 Authorization Required
Date: Wed, 09 Jan 2013 03:01:43 GMT
Server: Apache/2.2.9 (Unix) DAV/2 SVN/1.7.4

注意,这也适用于您没有访问授权的Subversion服务器。

如果Subversion服务器版本没有打印在HTML清单中,则可以在服务器返回的HTTP RESPONSE报头中找到该版本。您可以使用这个shell命令来获取它

wget -S --no-check-certificate \
  --spider 'http://svn.server.net/svn/repository' 2>&1 \
  | sed -n '/SVN/s/.*\(SVN[0-9\/\.]*\).*/\1/p';

如果SVN服务器需要提供用户名和密码,则在命令中添加wget参数——user和——password,如下所示

wget -S --no-check-certificate \
  --user='username' --password='password' \
  --spider 'http://svn.server.net/svn/repository' 2>&1 \
  | sed -n '/SVN/s/.*\(SVN[0-9\/\.]*\).*/\1/p';

要知道您的服务器正在运行哪个版本的Subversion,确实没有一个简单的方法——除非进入服务器并亲自查看。

然而,这可能不是你想象的那么大的问题。Subversion客户端是处理大量繁重工作的地方,大多数版本的Subversion客户端可以与几乎任何版本的服务器一起工作。

服务器版本真正对客户端产生影响的最后一个版本是在添加合并跟踪时从版本1.4到版本1.5的变化。合并跟踪在1.6版中得到了很大的改进,但这并没有真正影响客户端和服务器之间的交互。

让我们看看Subversion 1.8的最新变化:

svn move is now a first class operation: Subversion finally understands the svn move is not a svn copy and svn delete. However, this is something that the client handles and doesn't really affect the server version. svn merge --reintegrate deprecated: Again, as long as the server is at version 1.5 or greater this isn't an issue. Property Inheritance: This is another 1.8 release update, but this will work with any Subversion server -- although Subversion servers running 1.8 will deliver better performance on inheritable properties. Two new inheritable properties - svn:global-ignores and svn:auto-props: Alas! What we really wanted. A way to setup these two properties without depending upon the Subversion configuration file itself. However, this is a client-only issue, so it again doesn't matter what version of the server you're using. gnu-agent memory caching: Another client-only feature. fsfs performance enhancements and authz in-repository authentication. Nice features, but these work no matter what version of the client you're using.

在所有的特性中,只有一个依赖于服务器的版本为1.5或更高(1.4已经过时很长一段时间了。1.8的新特性将提高工作副本的性能,但服务器处于1.8版本并不是必要的。客户端版本比服务器版本对您的影响更大。

我知道这不是您想要的答案(没有查看服务器版本的官方方法),但幸运的是,服务器版本对您的影响并不大。

试试这个:

ssh your_user@your_server svnserve --version

svnserve, version 1.3.1 (r19032)
   compiled May  8 2006, 07:38:44

我希望这能有所帮助。

对于基于http的服务器,有一个Python脚本可以找到服务器版本: http://svn.apache.org/repos/asf/subversion/trunk/tools/client-side/server-version.py

您可以使用

`svn --version`