2011-10-04 83 views
2

我们是一家小公司(它的微软商店),我们目前使用颠覆与VisualSVN安装(很容易安装顺便说一句) 我目前评估Mercurial是因为svn中的分支恶梦。HTTPS for Mercurial 1.9.2在Windows Server 2008/IIS 7上给我Errno 10054

所以首先我跟着 http://www.firegarden.com/software/hosting-mercurial-repo-iis7-windows-server-2008r2-x64-python-isapi-cgi 与最新善变的源代码1.9.2和Python 2.7得到了下面的错误

Failed to import callback module 'hgwebdir_wsgi' 
The specified module could not be found. 

,所以我划伤说,然后我跟着这个 http://www.jeremyskinner.co.uk/mercurial-on-iis7/和它的工作,直到我到达了步骤 启用SSL这是问题所在。我什至设置使用OpenSSL的SSL证书 http://www.dylanbeattie.net/docs/openssl_iis_ssl_howto.html 仍然没有。 这是错误我得到

URLError: [Errno 10054] An existing connection was forcibly closed by the remote host 
[command returned code 255...] 

服务器端我有这个 hgweb.config

[collections] 
C:\repository\hg = C:/repository/hg 

[web] 
#push_ssl = false 
allow_push = * 
baseurl = /hg 
cacerts = 

的web.config

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
<system.webServer> 
    <handlers> 
     <add name="Python" path="*.cgi" verb="*" modules="CgiModule" scriptProcessor="C:\Python27\python.exe -u &quot;%s&quot;" resourceType="Unspecified" /> 
    </handlers> 
    <rewrite> 
     <rules> 
      <rule name="rewrite to hgweb" patternSyntax="Wildcard"> 
       <match url="*" /> 
       <conditions> 
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> 
       </conditions> 
       <action type="Rewrite" url="hgweb.cgi/{R:1}" /> 
      </rule> 
     </rules> 
    </rewrite> 
    <security> 
     <requestFiltering> 
      <requestLimits maxAllowedContentLength ="2147482624" /> 
     </requestFiltering> 
    </security> 
</system.webServer> 
<system.web> 
    <httpRuntime executionTimeout="540000" maxRequestLength="2097151"/> 
</system.web> 

客户端hgrc

[paths] 
default = https://webtest/hg/test/ 

[hostfingerprints] 
webtest = 50:de:a4:d9:72:59:68:fd:91 ... 

编辑 我试图在MacBook上安装MacHg来测试。我用http://machghelp.jasonfharris.com/kb/connections/how-do-i-add-a-server-certificate-or-fingerprint-for-https作为演练,它工作!所以这消除了服务器(即服务器可以从http & https推&拉),所以现在我确定它的Windows/TortoiseHg有问题。 (但以下这些步骤tortoiseHg给我什么:()

EDIT2 还有一个发现...使用HTTPS我甚至不能克隆,它仅适用于HTTP。我试图克隆的CodePlex项目之一使用HTTPS和工作!...这是很无奈

我这么想吗?任何帮助将不胜感激。

+0

尝试使用任何浏览器连接https URL并在此处显示IIS的答案 –

+0

它打开了带证书错误的默认存储库页面 – surya

+0

**其中** cert错误???如果由于自签名证书而导致未被信任的根 - 将其添加到trustedRoot(如果没有人提出更好的解决方案) –

回答

0

它工作时,我用旧版本即水银1.8.4。所以我停止了进一步调查

1

设置了水银证书在https://www.mercurial-scm.org/wiki/CACertificates

有描述在此页面那注意到s ays“使用openssl而不是IIS来生成证书” - 显然,IIS7自签名证书不会在Mercurial使用的SSL库中进行验证。

如果您安装了TortoiseHg,您的Mercurial证书将从hgrc.d/cacert.pm中读取。这意味着您必须在此处添加您的自签名证书。

否则,最有效的方式来获得帮助解决您的安装是通过Mercurial IRC

0

请确保您进入IIS SSL设置并检查客户端证书上的“忽略”。

0

我只是发布这个为任何人进入线索从搜索。

当通过IIS托管时,目前有一个问题在mercurial python模块中使用largefiles扩展。如果遇到将大型更改集(或大型文件)通过TortoiseHg推送到IIS的问题,请参阅this post

这个问题最终证明是Python 2.7.3中引入的一个错误(可能解释了为什么有那么多人在寻找Mercurial问题时不解决问题)。回滚到Python 2.7.2让我进一步提前(阻塞在30Mb而不是15Mb),但为了正确地解决问题,我必须安装IISCrypto实用程序以完全禁用通过SSLv2的传输。