2012-03-23 24 views
5

我一直在遇到一些问题,试图通过使用git-svn的HTTPS访问Subversion存储库。通过代理服务器通过HTTPS使用git-svn时出现未知协议错误

当我键入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. 我使用msysgit 1.7.9.0在Windows 7 64位系统。我还安装了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)不是一个选项。

还有什么我还没试过?

+0

您能否首先验证您是否可以使用普通的颠覆客户端检出该项目,以排除颠覆本身的任何问题? – 2012-03-23 15:36:27

+0

我已经这么做了 - Subversion客户端没有问题地检查项目。 – jammycakes 2012-03-23 15:38:50

+0

James,'openssl s_client -connect host:443'请为了清楚 – 2012-03-26 21:01:03

回答

0

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

当您通过代理连接到Subversion服务器时,git-svn不会使用.gitconfig中的代理设置,也不会使用您在TortoiseSVN中配置的设置。相反,它看起来在%USERPROFILE%\.subversion\servers[global]部分。

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

1

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

+0

这并不能解释为什么我能够使用vanilla Subversion和Mercurial/hgsubversion成功连接。您的链接建议我唯一可以遵循的是“目标网站不喜欢密码” - 但是,如何使用git-svn指定不同的密码?另外,我无权访问服务器来调整https或DNS设置。 – jammycakes 2012-03-27 19:58:57

1

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

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

+0

不幸的是,这个答案有同样的问题:它没有解释(一)为什么香草Subversion工作正常,Mercurial/hgsubversion也可以正常工作,以及(b)为什么SourceForge上的SVN存储库也失败。我开始认为这很可能是代理服务器问题。 – jammycakes 2012-03-30 15:21:33

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年)使用的颠覆安装

msysgit的git-svn - 因此能够利用检出安装的svn是(不幸)不表示问题。

some bug reports关于升级到msysgit的较新的颠覆,但它似乎还没有物化。

你有没有试过cygwin的git-svn

+0

+1。很好找! :) – MrGomez 2012-03-30 22:54:39

+0

在黑暗中拍摄,但也许可以简单地用新版本的svn替换libsvn dll。但是我没有一个容易访问的Windows机器来测试它。 – 2012-03-31 01:19:14

+0

我试过cygwin的git-svn。不幸的是,它给出了几乎相同的错误,除了它说OPTIONS而不是PROPFIND。 – jammycakes 2012-04-02 08:06:27

相关问题