我在笔记本电脑(Ubuntu)上,网络使用 HTTP 代理(只允许 HTTP 连接)。
当我将 svn up 用于 'http://.....' 之类的 url 时,一切都很酷(谷歌浏览器存储库工作完美),但现在我需要使用 'svn://... 从服务器上 svn up。 ' 我看到连接被拒绝。
我已经在 /etc/subversion/servers 中设置了代理配置,但它没有帮助。
有人有意见/解决方案吗?
7 回答
在/etc/subversion/servers
您正在设置中,这与连接到通常在由 命令启动的端口 3690 上运行的不同服务器http-proxy-host
无关。svn://
svnserve
如果您有权访问服务器,则可以svn+ssh://
按照此处的说明进行设置。
更新:您也可以尝试使用connect-tunnel
,它使用您的 HTTPS 代理服务器来建立隧道连接:
connect-tunnel -P proxy.company.com:8080 -T 10234:svn.example.com:3690
然后你会使用
svn checkout svn://localhost:10234/path/to/trunk
好的,这应该很容易:
$ sudo vi /etc/subversion/servers
编辑文件:
[Global]
http-proxy-host=my.proxy.com
http-proxy-port=3128
保存它,svn
再次运行,它会工作。
如果您可以通过 SSH 访问它,您可以使用 SSH 端口转发的 SVN 服务器。
使用SSHs -L
(或者-R
,我忘记了,它总是让我感到困惑)创建一个 ssh 隧道,以便
127.0.0.1:3690
真的是通过 ssh 隧道连接到 remote:3690,然后你可以通过
svn co svn://127.0.0.1/....
好的,这个话题有点过时了,但是当我在谷歌上找到它并且有一个解决方案时,这对某人来说可能很有趣:
基本上(当然)这在每个 http 代理上都是不可能的,但适用于允许在端口 3690 上进行 http 连接的代理。端口 443 上的 http 代理使用此方法来提供安全 https 连接的方法。如果您的管理员将代理配置为为 http 连接打开端口 3690,您可以设置本地计算机以通过代理建立隧道。
我只是需要从我们公司网络中的 svn.openwrt.org 中查看一些文件。创建隧道的一个简单解决方案是将以下行添加到您的 /etc/hosts
127.0.0.1 svn.openwrt.org
之后,您可以使用 socat 创建到本地端口的 tcp 隧道:
虽然是真的;do socat tcp-listen:3690 proxy:proxy.at.your.company:svn.openwrt.org:3690; 完毕
您应该以 root 身份执行该命令。它打开本地端口 3690 并在连接时在同一端口上创建到 svn.openwrt.org 的隧道。
只需根据自己的需要替换端口和服务器地址。
当您使用 svn:// URI 时,它使用端口 3690,可能不会使用 http 代理
svn:// 不说 http,因此 http 代理无能为力。
http不起作用的任何原因?你考虑过https吗?如果您真的需要它,您可能必须在防火墙中打开端口 3690。
如果您使用的是标准 SVN 安装,则 svn:// 连接将在 tcpip 端口 3690 上运行,因此除非您更改网络配置(您说只允许 Http 流量)或安装 http 模块,否则基本上无法连接托管 SVN 服务器的服务器上的 Apache。