2014-01-31 72 views
3

我在OS X 10.9.1上存在与mercurial的问题我有一个存储库与几个文件的bitbucket,当我试图克隆但我发现了一个错误:Mercurial https克隆:“中止:错误:(...)错误的版本号”

mac-mini-jakub:testrepo kubeczek$ hg clone https://[email protected]/kubecz3k/test 
abort: error: _ssl.c:507: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number 

我已经安装了水银2.8.2适用于MacOS X 10.9从https://www.mercurial-scm.org/downloads/

我敢肯定,在一切都到位桶的一侧是好的,因为我在linux机器上没有问题。

这里是完整的回溯:

mac-mini-jakub:testrepo kubeczek$ hg clone https://[email protected]/kubecz3k/test --traceback 
Traceback (most recent call last): 
    File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/dispatch.py", line 133, in _runcatch 
    return _dispatch(req) 
    File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/dispatch.py", line 806, in _dispatch 
    cmdpats, cmdoptions) 
    File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/dispatch.py", line 585, in runcommand 
    ret = _runcommand(ui, options, cmd, d) 
    File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/dispatch.py", line 897, in _runcommand 
    return checkargs() 
    File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/dispatch.py", line 868, in checkargs 
    return cmdfunc() 
    File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/dispatch.py", line 803, in <lambda> 
    d = lambda: util.checksignature(func)(ui, *args, **cmdoptions) 
    File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/util.py", line 512, in check 
    return func(*args, **kwargs) 
    File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/commands.py", line 1286, in clone 
    branch=opts.get('branch')) 
    File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/hg.py", line 268, in clone 
    srcpeer = peer(ui, peeropts, source) 
    File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/hg.py", line 122, in peer 
    return _peerorrepo(rui, path, create).peer() 
    File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/hg.py", line 102, in _peerorrepo 
    obj = _peerlookup(path).instance(ui, path, create) 
    File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/httppeer.py", line 238, in instance 
    inst._fetchcaps() 
    File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/httppeer.py", line 57, in _fetchcaps 
    self.caps = set(self._call('capabilities').split()) 
    File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/httppeer.py", line 171, in _call 
    fp = self._callstream(cmd, **args) 
    File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/httppeer.py", line 118, in _callstream 
    resp = self.urlopener.open(req) 
    File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 404, in open 
    response = self._open(req, data) 
    File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 422, in _open 
    '_open', req) 
    File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 382, in _call_chain 
    result = func(*args) 
    File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/url.py", line 368, in https_open 
    return self.do_open(self._makeconnection, req) 
    File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/keepalive.py", line 257, in do_open 
    raise urllib2.URLError(err) 
URLError: <urlopen error [Errno 1] _ssl.c:507: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number> 
abort: error: _ssl.c:507: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number 

我的Python版本是:

mac-mini-jakub:~ kubeczek$ python -V 
Python 2.7.6 

而SSL:

>>> print _ssl.OPENSSL_VERSION 
OpenSSL 0.9.8y 5 Feb 2013 

我会欣赏每一个帮助,谢谢!

+1

发布确切的Python版本和SSL版本(导入_ssl并打印_ssl。OPENSSL_VERSION) – vzamanillo

+0

@vzamanillo感谢您的回复,SSL版本是:“OpenSSL 0.9.8y 5 Feb 2013”​​,python版本是:Python 2.7.6 – Kubeczek

+1

来自Mercurial 2.7 sslutils在Python 2.6和更高版本上强制使用SSLv3,bitbucket使用V3所以也许问题与OpenSSL有关,请尝试更新OpenSSL(https://stackoverflow.com/questions/18752409/updating-openssl-in-python-2-7)或禁用Mercurial证书检查(https:// stackoverflow。 com/questions/5366869/how-to-completely-disable-ssl-certificate-checking-in-mercurial-tortoisehg) – vzamanillo

回答

3

你可能必须禁用TLS,读this

要做到这一点,将它添加到〜/ .hgrc

[ui] 
tls = False 
关于SSL和TLS

更多信息here

+0

这是正确的解决方案。 (在某些时候,Mercurial已经放弃了对SSLv2的支持;稍后他们添加了这个配置选项,默认为true) – iPirat

+0

对我不起作用,仍然试图用TLS 1.0连接 – hwjp

+0

啊,你必须把它添加到'[ui]'部分。现在它不会抱怨使用TLS1.0,但SSL3_GET_RECORD:错误的版本号仍然会发生。认为这是做Python与<2.7.9 https://www.mercurial-scm.org/wiki/SecureConnections#warning:_connecting_to_.25s_using_legacy_security_technology_.28TLS_1.0.29 – hwjp

4

有另一个原因。这可能不是你的问题,但它也应该列在这里,对于其他人遇到此问题的情况:

如果您位于代理的后面并且代理设置不正确,那么也会显示此错误消息。上帝知道为什么...

例如:你有以下配置

[http_proxy] 
no = localhost,127.0.0.1 
host = 1.2.3.4:8080 
user = myusername 
passwd = oldpassword 

的旧密码可能被obsolet(你已经忘记了去改变它)。然后出现相同的SSL错误版本错误。它绝对没有任何意义(至少对我来说),但我转载了这个问题与汞3.6.2。更正代理设置可修复所有问题。

+1

是的!这个,谢谢。最终发现这是因为bitbucket指向我在media-api.atlassian.io上托管的一个包,而最后一个不在鱿鱼代理白名单上。唷。谢谢! – hwjp

1

我对某些bitbucket存储库(但不是全部)有这个问题。我发现,根据追溯,设置--config ui.clonebundles=false工作。

hg clone --config ui.clonebundles=false https://bitbucket.org/me/myrepo 

让克隆变得更慢了。

虽然,请参阅我对@ UniversE上面的答案的评论,但实际的问题是不在我的squid代理白名单上的atlassian子域名。呃,那很难调试。