如何为 svn 配置 HTTP 代理

Posted

技术标签:

【中文标题】如何为 svn 配置 HTTP 代理【英文标题】:How to configure a HTTP proxy for svn 【发布时间】:2010-12-02 05:57:06 【问题描述】:

我想检查存储库 http://code.sixapart.com/svn/perlbal/ 中的代码。我只能通过设置代理来访问存储库 url。我想如果我想通过 svn 从同一个 URL 获取代码,我也需要配置一个代理。那么你们中的任何人都可以告诉我如何在 svn 中配置 HTTP 代理吗?

顺便说一下,我在Linux下使用命令行svn客户端。

【问题讨论】:

【参考方案1】:

您是否看过常见问题解答条目What if I'm behind a proxy??

... 编辑您的“服务器”配置文件以指示要使用的代理。文件位置取决于您的操作系统。在 Linux 或 Unix 上,它位于目录“~/.subversion”中。在 Windows 上,它位于“%APPDATA%\Subversion”中。 (试试“echo %APPDATA%”,注意这是一个隐藏目录。)

对我来说,这涉及取消注释和设置以下行:

#http-proxy-host=my.proxy
#http-proxy-port=80
#http-proxy-username=[username]
#http-proxy-password=[password]

在命令行: nano ~/.subversion/servers

【讨论】:

有谁知道是否有办法将其配置为尝试代理,如果代理不可用,则使用基本网络连接?我有一个代理在工作,但是当我在远程时,我希望能够使用 SVN,而不必打开配置文件并注释掉代理的行。 对我来说,下面的 Kimvais 解决方案有所帮助。我不得不取消注释“[global]”正下方的部分。最初,我在它们第一次出现时取消了相同的行的注释,这没有帮助。 @ErikMitchell:创建两个版本的配置文件和允许您切换的脚本。阅读您的操作系统文档,了解如何连接到网络发现机制并在您的笔记本电脑注意到它的位置时执行正确的脚本。 它对我有用,但密码仍以纯文本形式存储。我不希望我的密码像这样暴露。有没有办法解决这个问题?【参考方案2】:

You can find the instructions here。基本上你只需添加

[global]
http-proxy-host = ip.add.re.ss
http-proxy-port = 3128
http-proxy-compression = no

到您的~/.subversion/servers 文件。

【讨论】:

这是客户端配置。 “服务器”文件表示连接到服务器的设置。见svnbook.red-bean.com/en/1.1/ch07.html#svn-ch-7-sect-1.3.1 “服务器”文件配置的最新 svnbook 链接 (v1.7):svnbook.red-bean.com/en/1.7/…【参考方案3】:

在 TortoiseSVN 中,您可以在 Settings=> Network 下配置代理服务器

【讨论】:

如果能加截图就太好了【参考方案4】:

有两种常见的方法:

Specify http-proxy- options in your /etc/.subversion/servers or %APPDATA%\Subversion\servers file,

使用--config-option command-line option 在您运行的单个命令行中指定相同的http-proxy- 选项。例如,

svn checkout ^
--config-option servers:global:http-proxy-host=<PROXY-HOST> ^
--config-option servers:global:http-proxy-port=<PORT> <REPO-URL> <LWC-DIR> 

如果您使用的是 Windows,也可以write http-proxy- options to Windows Registry。如果您需要通过组策略对象在 Active Directory 环境中应用代理设置,这将非常方便。

【讨论】:

在linux中你可以使用alias svn-my-proxy='svn --config-option ...'来使用svn-my-proxy co http://svn/repo/trunk。这使您可以轻松地在代理 (svn-my-proxy co) 和无代理 (svn co) 配置之间切换,具体取决于您的计算机当时所在的网络。您可以将 alias 命令添加到您的 ~/.bashrc,以便在下次 bash 登录时重新创建。在工作网络和家庭网络之间帮助我很多!【参考方案5】:

在 Windows 7 中,您可能需要编辑此文件

C:\Users\\AppData\Roaming\Subversion\servers

[global]
http-proxy-host = ip.add.re.ss
http-proxy-port = 3128

【讨论】:

【参考方案6】:

大多数 *nixen 在执行 Web 请求时理解环境变量“http_proxy”。

export http_proxy=http://my-proxy-server.com:8080/
svn co http://code.sixapart.com/svn/perlball/

应该可以解决问题。大多数 http 库都会检查这个(和其他)环境变量。

【讨论】:

遗憾的是,Subversion 还不支持 http_proxy,而且可能永远不会。请参阅subversion.tigris.org/issues/show_bug.cgi?id=1327 的问题 感谢您的提醒。我很好奇:在 Ubuntu 14.10 下,http_proxy 约定似乎有效(SVN v1.8.10)。但它不在 Centos 6.6 (SVN v1.6.11) 下。我在their changelog 中进行了搜索,但没有找到足够清楚的信息。知道它是否已永久修补? svn 1.8 几乎完全改变了 http 网络的运行方式。添加对 http_proxy 的支持可能会产生副作用。

以上是关于如何为 svn 配置 HTTP 代理的主要内容,如果未能解决你的问题,请参考以下文章

如何为SVN的所有本地用户设置默认代理设置?

如何为代理网站正确配置 CORS 设置

如何为我的 Couchapp 配置 Apache 代理?

如何为现有的本地集群配置和启用 Azure Service Fabric 反向代理?

如何为 WebSocket 协议配置 AWS ELB 和 Nginx? [关闭]

如何为linux系统设置全局的默认网络代理