通过代理服务器在HTTPS上使用git-svn时出现未知协议错误

时间:2012-03-23 15:05:16

标签: git svn ssl git-svn

我一直在尝试使用git-svn通过HTTPS访问Subversion存储库时遇到一些问题。

当我输入git svn init --username=<my username> --trunk=https://<host>/<project>/trunk时,收到以下错误消息:

RA layer request failed: PROPFIND request failed on '/<project>/trunk':
PROPFIND of '/<project>/trunk': SSL negotiation failed: SSL error: unknown
protocol (https://<host>) at C:\Program Files (x86)\Git/libexec/git-core\git-svn
line 2299

还有几点需要注意:

  1. 我在Windows 7 x64上使用msysgit 1.7.9.0。我还安装了Subversion 1.7.1命令行客户端和TortoiseSVN 1.7.1。
  2. 我通过代理服务器进行连接,我通过HTTP_PROXY环境变量和git config http.proxy指定了代理服务器。
  3. 我可以在同一台机器上通过HTTPS克隆Github存储库而不会出现问题。
  4. 普通的Subversion客户端检查出同一个项目没有问题。我也能够使用Mercurial和hgsubversion成功克隆它,虽然它确实无法识别服务器的SSL证书,所以我必须在我的mercurial.ini文件中明确指定它。因此,我使用git config http.sslVerify=false。但是,这没有任何区别。
  5. 单向解决方法,例如使用svnsync(例如建议的here)不是一种选择。
  6. 还有其他我没试过的东西吗?

4 个答案:

答案 0 :(得分:9)

为了扩展其他两个答案(并解释为什么你看到你所看到的),git svn(作为msysgit的一部分)是针对svn 1.4.6构建的:

C:\> git svn --version
git-svn version 1.7.7.1.msysgit.0 (svn 1.4.6)

请注意,1.4.6是......好吧...... (和hasn't even been supported since 1.6 was released在2009年。)

使用您的subversion安装

msysgit的git-svn - 因此能够使用已安装的svn结帐(不幸的是)并不表示问题。

关于msysgit升级到更新的subversion有some bug reports,但看起来还没有实现。

您是否尝试过cygwin的git-svn

答案 1 :(得分:1)

您收到的消息(SSL23_GET_SERVER_HELLO:未知协议)很容易谷歌。例如。 herehere看起来您的https或dns服务器配置错误,与git无关。

答案 2 :(得分:1)

提供稍微简洁的答案,kan is correct。您看到这个的原因是您的上游存储库未正确配置SVN + HTTPS。这可能是由于服务器端的配置错误,或者可能是由于服务的SVN协议与客户期望的不同而导致的。

勘误表为此问题提供了正确的调试方案。如果您可以控制相关的SVN存储库,请确保its HTTPS configuration is working properly继续将其用作上游存储库。如果您希望更改用于进一步排除连接故障的协议或URL(例如,尝试通过HTTP或SSH),here's the guide you'll need

答案 3 :(得分:0)

我终于发现了如何让它发挥作用。答案来自this thread

当您通过代理连接到Subversion服务器时,git-svn不使用.gitconfig中的代理设置,也不使用您在TortoiseSVN中配置的设置。相反,它会查看[global]的{​​{1}}部分。

将我们的代理服务器设置添加到此文件允许我连接到外部Subversion服务器。