我正在尝试将 Red Hat 计算机上的 Subversion 客户端连接到运行 VisualSVN Server 的 Windows Server 2012 计算机。我的目标是通过 Linux 计算机上的 shell 脚本运行svn export
以检索开发服务器的代码。
首先,我尝试使用默认的 https Repo 连接字符串进行连接。
svn export --username user --password pass https://OPSSVN1/svn/volunteers/ ./svn-export
Linux 盒子返回...
svn: Server sent unexpected return value (501 Not Implemented) in response to OPTIONS request for 'https://OPSSVN1/volunteers'
因此我去安装了 svnserve.exe 作为监听 3960 的服务,并将脚本更改为..
svn export --username user --password pass svn://OPSSVN1:3960/volunteers/ ./svn-export
我收到以下消息
svn: Can't connect to host 'OPSSVN1': Connection refused
现在,如果我使用窗口桌面的任一连接字符串,它都可以正常工作。
其他已知事实可能有帮助...
- Windows 服务器已打开该端口的防火墙。
- Linux 机器可以 ping 通该机器
- Linux 机器可以 Telnet 到 Windows 机器上的 443 端口
- Linux 机器无法通过 telnet 连接到 Windows 机器上的 3960 端口
- Linux SVN 版本:svn,版本 1.6.11(r934486)
- VisualSVN 版本 2.7.2
我在 Windows 上设置的 SVN 服务是使用以下命令完成的。
cmd /c sc create subversion binpath="c:\svnserve\svnserve.exe --service -r E:\Repositories --listen-port 3960"
文件夹 svnserve 是指向程序文件 x86 目录中 visualsvn bin 文件夹的符号链接。
关于如何让这个 Linux 机器从 VisualSVN 导出代码,您有什么想法吗?
答案1
您输入的 URL 似乎无效。
您从哪里获得 URL
https://OPSSVN1/volunteers/
?VisualSVN Server 存储库的 URL 通常看起来像。除非您将 VisualSVN Server 隐藏在反向代理后面,否则https://<hostname>/svn/<repository-name>
URL 必须是。https://OPSSVN1/svn/volunteers/
您在 Linux 机器上使用的 Subversion 1.6.11 客户端太过过时。
从 1.8 版开始,Subversion 1.6 不再受支持。1.6.11 版于 2010 年 4 月 19 日发布,已经过时了。事实上,它落后了 11 个补丁版本。最新的 Subversion 1.6.23 客户端于 2013 年 5 月 30 日发布,包含大量修复。如果您必须使用 svn 1.6 客户端,至少要将其更新到最新的补丁版本。
另一方面,你必须考虑将你的客户端升级到最新的 Subversion 1.8 版本。