如何找到我的Subversion服务器版本号?


292

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

我如何找到答案?

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

注意:我不需要我的项目的修订号等。此问题与Subversion软件本身有关。

Answers:


210

要查找Subversion REPOSITORY的版本,您可以:

  1. 查看Web上的存储库,页面底部将显示类似内容:
    “由Subversion版本1.5.2(r32768)提供支持”。
  2. 从命令行:<在这里插入curl,grep oneliner>

如果未显示,请查看页面源

<svn version="1.6.13 (r1002816)" href="http://subversion.tigris.org/"> 

现在对于Subversion CLIENT:

svn --version

就足够了


31
仅当服务器将显示此信息时,此方法才有效,而某些服务器(如google代码托管)则不会。
Andrea Francia

3
是服务器版本还是存储库版本?(它们可以是不同的AFAIK)
GraemeF,2010年

7
您还可以查看响应标头(例如使用firebug / net视图)并在其中找到SVN版本
haknick

6
CollabNet也不显示版本号-可见或在页面源中。
TenLeftFingers 2014年

5
-1:等待此答案完成(“ <插入卷毛,这里是grep oneliner>”占位符。)答案对我来说没有任何用处,因为我使用的服务器是svn://-only。
Slipp D. Thompson 2015年

133

让我们合并这些响应:

对于REPOSITORY / SERVER(原始问题):

如果能够访问Subversion服务器:

  • 从早期的答案曼努埃尔,运行SVN服务器上执行以下操作:

    svnadmin --version
    

如果使用HTTP / HTTPS访问:

  • 通过浏览器访问服务器时,请参阅“ Subversion支持”行。

  • 通过浏览器访问存储库,然后查找HTML源代码中嵌入的版本字符串。摘自elviejojaredjacobs的早期答案。同样,从??,使用浏览器的开发人员工具(通常是Ctrl+ Shift+ I)读取完整的响应。这也是处理证书和授权的最简单(非自动化)方式-您的浏览器会为您完成。

  • 根据克里斯托弗(Christopher先前的回答,检查响应标签(这些未在HTML源代码中显示)。

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

如果svn://或ssh + svn访问

如果是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

这个答案不清楚,svnserve --version必须在服务器上使用。如果在客户端上运行,它将给出客户端而不是服务器的版本号。
Craig McQueen 2014年

这是一个很好的收藏。我是通过“阅读来自http / https访问的完整响应”的方式实现的。就我而言,我可以在响应标头中看到一行:<Server:“ Apache / 2.2.14(Unix)DAV / 2 SVN / 1.6.9 mod_ssl / 2.2.14 OpenSSL / 0.9.8a”>
Tatera

如果有人使用Visual SVN Server,则HTML源代码的前几行(右键单击,查看Page Source)将指示SVN版本。
猛禽


70

在服务器上: svnserve --version

如果是基于svnserve的配置(svn://和svn + xxx://)。

(为了完整性)。


正如Joe J在下面提到的那样,我相信这只会为您提供svnserve客户端程序的版本,该版本很可能与svn客户端程序匹配
Kirby

12
svnserve不是客户端程序,而是服务器。在服务器上时,您必须输入上面的命令。
Milen A. Radev

48

这是获取SVN服务器版本的最简单方法。即使您的SVN信息库需要HTTPS,HTTP仍然可以工作。

$ curl -X选项http:// my-svn-domain /
<!DOCTYPE HTML PUBLIC“-// IETF // DTD HTML 2.0 // EN”>
<html> <head> ... </ head>
<body> ...
<地址> Apache / 2.2.11(Debian)DAV / 2 SVN / 1.5.6 PHP / 5.2.9-4 ... </地址>
</ body> 
</ html>

1
这就是我所需要的。请投票!
bentford

8
仅在“ ServerTokens Full”(httpd.apache.org/docs/2.2/mod/core.html#servertokens)时有效。
Milen A. Radev

24

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

您可以使用获得客户端版本

`svn --version`

5
除非我没有记错,否则该脚本似乎仅适用于基于http或https的服务器,而不适用于svn或ssh + svn服务器
crashmstr

如果基于ssh,则将ssh放入框中并运行“ svn --version”。
John Meagher's

5
服务器上的'svn --version'只为您提供服务器上运行的客户端版本,它不一定与服务器版本相同
PiedPiper

1
该脚本还要求在Apache服务器上设置ServerTokens Full。对于curl解决方案将失败的服务器,它将失败。
yam655

24

如果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';

4
我尝试了该页面上的所有其他选项,包括curl和URL,这是迄今为止唯一对我有用的选项-服务器是freebsd,服务器1.6.16。
ideaman42 2011年

同样,这是所有答案中唯一对我有用的答案。我使用了Firefox Live HTTP标头,并读取了服务器的响应,因为我也遇到了ssl证书问题,我不想麻烦自己解决。
柯比(Kirby)

1
@Kirby我添加了一个--no-check--certificate参数a --user--password来处理需要凭据但没有有效的ssh证书的服务器。如您所说,这很常见。
Christopher

1
@Christopher,它应显示为“ wget --password ='password'.. | ..;' 以上。
whaefelinger

@whaefelinger感谢您的纠正。我已经更新了答案。
Christopher

8

另一种选择:如果您使用Firefox(我使用的是14.0.1)和SVN Web界面:

  • 打开 在回购页面上工具-> Web开发人员-> Web控制台
  • 刷新页面
  • 点击获取
  • 在“ 服务器:”行的“ 响应标题”部分中查找

那里应该有一个“ SVN / 1.7.4”字符串或类似的字符串。同样,这只有在您具有如上所述的“ ServerTokens Full”时才可能起作用。


谢谢。我只是在Chrome中为VisualSVN服务器做了类似的事情,方法是在“开发人员工具”窗口中打开“网络”标签(按F12键访问此标签),然后检查响应。
XåpplI'-I0llwlg'I -

更新:刷新页面之前,单击“工具”窗格中的“网络”选项卡,然后刷新页面(当前为Firefox 30)
Conrad

7

找出您的服务器正在运行哪个版本的Subversion 确实不是一个简单的方法-除了进入服务器并亲自查看之外。

但是,这可能不是您认为的那么大的问题。Subversion客户端需要处理很多繁重的工作,并且大多数Subversion客户端版本都可以与几乎任何版本的服务器一起使用。

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

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

  • svn move现在是一流的操作:Subversion终于明白了svn move不是svn copysvn delete。但是,这是客户端处理的,并不会真正影响服务器版本。
  • svn merge --reintegrate 不推荐使用:同样,只要服务器的版本为1.5或更高,这都不是问题。
  • 财产继承:这是另一个1.8版本更新,但是它可以与任何Subversion服务器一起使用-尽管运行1.8的Subversion服务器将在可继承属性上提供更好的性能。
  • 两个新的可继承属性- svn:global-ignoressvn:auto-props:las!我们真正想要的。无需依赖Subversion配置文件本身即可设置这两个属性的方法。但是,这是一个仅客户端的问题,因此无论您使用什么版本的服务器,都没有关系。
  • gnu-agent内存缓存:另一个仅客户端功能。
  • fsfs性能增强和authz存储库身份验证。不错的功能,但是无论您使用什么版本的客户端,这些功能都可以使用。

在所有功能中,只有一个取决于服务器的版本为1.5或更高(并且1.4已经过时了一段时间。1.8的较新功能将提高工作副本的性能,但版本为1.8的服务器则不行)不需要。与服务器版本相比,您受客户端版本的影响更大。

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


7

尝试这个:

ssh your_user@your_server svnserve --version

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

希望对您有所帮助。


4

对于svn + ssh配置,请使用ssh在主机上运行svnserve --version:

$ ssh user @ host svnserve --version

必须在实际充当服务器的计算机上运行svnserve命令。


1
假设您可以SSH到服务器。通常在authorized_keys文件和command = svnserve中配置带有公钥的svn + ssh服务器,它会自动启动svnserver而没有--version选项。
jrwren 2012年

2

只需使用Web浏览器转到SVN地址即可。检查源代码(Ctrl+ U)。然后,您会在HTML代码中找到类似的内容:

<svn version="1.6. ..." ...

2

使用Firefox浏览存储库,并使用Firebug检查元素。在NET选项卡下,您可以检查页面的页眉。它将类似于:

Server: Apache/2.2.14 (Win32) DAV/2 SVN/1.X.X

1
在我的Subversion服务器上进行了尝试,看不到版本。查看其他类似的帖子,听起来好像不是所有的Subversion服务器都支持这种确定服务器版本号的特定方式。
2012年

1

对于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服务器。


1

您可以使用HTTP连接到Subversion服务器,并在HTTP标头中找到版本号。


0

如果使用VisualSVN Server,则可以通过几种不同的方法找出版本号。

使用VisualSVN服务器管理器

请按照以下步骤通过管理控制台查找版本:

  1. 启动VisualSVN服务器管理器控制台。
  2. 请参阅仪表板右下角的版本

在此处输入图片说明

如果单击版本,您还将看到组件的版本。

在此处输入图片说明

检查README.txt文件

请按照以下步骤从readme.txt文件中查找版本:

  1. 启动notepad.exe
  2. 打开%VISUALSVN_SERVER%README.txt文件。第一行显示版本号。

在此处输入图片说明


-1

命令行上的以下内容应为您提供版本号

   svn --version

11
那只会给您客户端的版本(除非您在服务器上运行它)。(即使那样,服务器的svn客户端也不一定与svn服务器的版本相同,尽管很有可能是。)
cjm

12
-1这仅给出与服务器号无关的Subversion客户端号。
Andrea Francia

2
这是给客户的。对于服务器版本svnserve --version
Rajesh

1
svn help没有帮助,因为它没有列出以两个破折号开头的参数。寻找我的svn版本时,是透过Google找到您的讯息。
BernhardDöbler'16

-1

除非管理员运行“ svnadmin upgrade”,否则不会自动更新存储库。要确定存储库的版本号,请检查“格式”文件。参见@bdumitriu的评论

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.