2012-06-22 34 views
2

我正在尝试使用hgweb.wsgi脚本获取在Windows Server 2008/IIS 7.5下的mercurial服务器上工作的largefiles扩展。Mercurial largefiles在Windows Server 2008上无法正常工作

当我克隆与本地大型文件(但使用https://domain/,而不是文件系统路径),一切回购被克隆的罚款,但是当我尝试在不同的机器上,我得到abort: remotestore: largefile XXXXX is missing

下面是详细的输出:

requesting all changes 
adding changesets 
adding manifests 
adding file changes 
added 1 changesets with 177 changes to 177 files 
calling hook changegroup.lfiles: <function checkrequireslfiles at 0x0000000002E00358> 
updating to branch default 
resolving manifests 
getting .hglf/path/to.file 
... 
177 files updated, 0 files merged, 0 files removed, 0 files unresolved 
getting changed largefiles 
getting path/to.file:c0c81df934cd72ca980dd156984fa15987e3881d 
abort: remotestore: largefile c0c81df934cd72ca980dd156984fa15987e3881dis missing 

两台机器都有扩展工作。我试过禁用防火墙,但没有帮助。除了将它添加到mercurial.ini之外,我还需要做任何事情来设置扩展吗?

编辑:如果我从服务器的AppData\Local\largefiles\目录中删除文件,在服务器上克隆时会出现相同的错误,除非我使用文件系统路径进行克隆,在这种情况下,文件会重新添加到AppData \ Local \大型文件\”

编辑2:这里的调试输出和追踪:

177 files updated, 0 files merged, 0 files removed, 0 files unresolved 
getting changed largefiles 
using http://domain 
sending capabilities command 
getting largefiles: 0/75 lfile (0.00%) 
getting path/to.file:64f2c341fb3b1adc7caec0dc9c51a97e51ca6034 
sending statlfile command 

Traceback (most recent call last): 
    File "mercurial\dispatch.pyo", line 87, in _runcatch 
    File "mercurial\dispatch.pyo", line 685, in _dispatch 
    File "mercurial\dispatch.pyo", line 467, in runcommand 
    File "mercurial\dispatch.pyo", line 775, in _runcommand 
    File "mercurial\dispatch.pyo", line 746, in checkargs 
    File "mercurial\dispatch.pyo", line 682, in <lambda> 
    File "mercurial\util.pyo", line 463, in check 
    File "mercurial\commands.pyo", line 1167, in clone 
    File "mercurial\hg.pyo", line 400, in clone 
    File "mercurial\extensions.pyo", line 184, in wrap 
    File "hgext\largefiles\overrides.pyo", line 629, in hgupdate 
    File "hgext\largefiles\lfcommands.pyo", line 416, in updatelfiles 
    File "hgext\largefiles\lfcommands.pyo", line 398, in cachelfiles 
    File "hgext\largefiles\basestore.pyo", line 80, in get 
    File "hgext\largefiles\remotestore.pyo", line 56, in _getfile 
Abort: remotestore: largefile 64f2c341fb3b1adc7caec0dc9c51a97e51ca6034 is missing 

_getfile函数抛出,因为statlfile命令返回一个例外,该文件没有被发现。

我从未使用过蟒蛇自己,所以我不知道我在做什么,而试图调试这一点:据我所知的statlfile命令获取服务器上执行d

,所以我不能对它进行调试从我的本地机器。我试着在服务器上运行python -m win32traceutil,但它没有显示任何内容。我也尝试在服务器的mercurial配置文件中设置accesslogerrorlog,但它不生成它们。

我通过hgweb.wsgi脚本运行hg,并且我不知道是否/如何使用该脚本进入python调试器,但是如果我能够在服务器上运行调试器,则可以缩小问题的范围。 ..

回答

1

终于搞明白了,扩展程序试图写入临时文件到%windir%\System32\config\systemprofile\AppData\Local,这导致了许可错误。该调用被封装在try-catch块中,最终返回“文件未找到”错误。

-1

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

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

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

相关问题