在装有Vista 32Bit SP2的PC上(UAC已激活,Kaspersky Security Suite启用了防火墙)我已经设置了一个Subversion服务器(使用SlikSVN安装程序1.6.13),Tomcat 7.0,Java 6u21和Hudson 1.386。我使用Firefox 3.6("http://localhost:8080/hudson"
)通过http-Interface访问Hudson。我下载了一个简单的demo repo并启动了subversion服务器,添加了repo。当命令
在命令提示符处输入“svn list 的svn://本地主机/ gameoflife /主干“
,服务器打印出列表。我也可以通过右键单击Windows资源管理器中的文件夹来访问TortoiseSVN的仓库。一切似乎都正确设置。但以下两件事情不起作用:
在浏览器中输入"svn://localhost/gameoflife/trunk"
。浏览器询问他是否应该使用TortoiseSVN打开它,但在同意之后,TortoiseSVN无法连接(“被服务器拒绝”)。
更重要的是,我的问题的原因是Hudson无法连接到SVN。构建日志显示"ERROR: Failed to check out svn://localhost/gameoflife/trunk"
。项目配置抱怨无法访问存储库URL“svn:// localhost / gameoflife / trunk”("svn:connection refused by the server"
)并建议添加授权信息。但是我没有在svn服务器上设置用户名或密码。我已经将Hudson Subversion插件从1.20更新到1.21,但这并没有改变任何东西。禁用防火墙并没有改变任何东西。
我确信在设置构建服务器时我已经仔细遵循了详细的逐步说明,但是对于Subversion和Hudson来说,我没有亲,我现在被困住了。因此我的问题是:Hudson无法访问Subversion的原因是什么?如何使其工作?
更新:我确保Vista的主机文件中包含“127.0.0.1 localhost”(但即使输入127.0.0.1而不是localhost,URL也不起作用)。我检查了端口3690没有被防火墙阻止。我的错误消息没有说明它有身份验证错误,也没有说服务器主动拒绝连接。这是输入不存在的URL时获得的相同错误消息。如果同一个URL在控制台提示符下不起作用,我会假设我有一个拼写错误,但我仔细检查过几次。这可能是一个Vista问题,但我仍然找不到解决方案。
更新2 :我越来越相信它必须是我的Vista系统(错误)配置方式的副作用。 Hudson的作品,Subversion的作品。但如果两者都在同一台机器上运行,它们将无法一起工作。我能够从Hudson中访问远程 Subversion服务器而没有任何问题。但是同样的Hudson无法在本地访问Subversion。在类似配置的Vista-PC上进行设置时,我再现了“在本地不能一起工作”的行为(这次使用64位版本和Avira免费软件而不是卡巴斯基的主要区别)。
我尝试用另一个(VisualSVN-Server 2.1.4)交换Subversion发行版并尝试使用https访问它。最初我似乎取得了进展,但现在当文件即将从回购中检索时,它因握手错误而失败。
由于我无法找到问题的原因,我现在正在切换到另一个CI-Build-Tool。尽管如此,感谢您花时间帮助我。
答案 0 :(得分:2)
首先,您可以作为Hudson用户(即运行Hudson服务器的用户)登录,并查看该Hudson用户是否可以访问subversion数据库?
这将在90%的时间内指出问题。它通常是一些小问题,例如错误的PATH或错误的身份验证。如果你可以作为Hudson用户从命令行签出和构建,你应该可以通过Hudson来完成。
我知道在Windows上,服务器进程可以生成一些 server 用户,该用户无法从命令行登录,但您也可以指定真实用户作为服务器进程也是如此。 Subversion和Hudson最好指定一个真实用户,这样你就可以在必要时进行命令行调试。
听起来您正在尝试浏览使用带有Web浏览器的svnserve
服务器的Subversion存储库。大多数Web浏览器通常无法处理svn
协议。
您应该使用ViewVC或Sventon等内容在Web浏览器中浏览存储库。 Hudson可以很好地使用这两个软件包,并将它的变更报告与这些软件包集成在一起。单击文件名将显示构建中使用的版本与先前版本之间的差异。
ViewVC使用Python,而Sventon是一个Java包。我更喜欢Sventon,因为它不需要存在于Subversion存储库服务器上。
答案 1 :(得分:1)
答案 2 :(得分:0)
听起来你需要身份验证来与subversion交谈。如果匿名读取不是您公司的问题,我建议您将服务器设置为允许匿名读取请求。
如果有问题,您可以在hudson中输入身份验证详细信息。
如果您使用现代版本,它应该通知您身份验证失败,您需要输入凭据。
答案 3 :(得分:0)
尝试使用telnet(telnet localhost 3690
)连接到端口3690。如果它不起作用,请检查您是否安装了svnserve守护程序/服务并且它正在运行。
您是否为JVM配置了代理 (在Windows上,这可以用Java完成 控制面板,默认为Internet 使用资源管理器设置)。如果是这样, 尝试禁用代理。
这两个提示取自http://old.nabble.com/SVN-protocol.-Connection-refused-by-the-server-tt22481558.html#a22481558
最后一条评论说:
......我只是好奇为什么会这样做 SVNKit和命令行SVN不同?
答案 4 :(得分:0)
其他解决方案......
Svn服务器只响应ipv6 ...我无法解释为什么,我既不是Windows也不是网络大师,但它有效......
我的/ windows / system32 / drivers / etc / hosts:
127.0.0.1 localhost4
::1 localhost6
::1 local-svn
127.0.0.1 local-tomcat
我使用svn:// local-svn // trunk / ...访问svn 我使用http://local-tomcat:8080/
访问tomcat尝试使用ipv6访问tomcat失败。 尝试使用ipv4访问svn失败。