2012-06-22 32 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的傳輸。

相關問題