2

hgweb.wsgi スクリプトを使用して、Windows Server 2008 / IIS 7.5 の下の Mercurial サーバーで largefiles 拡張機能を動作させようとしています。

largefiles を使用してローカルでレポを複製すると (ただし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\largefiles\」に追加されます。

編集 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

私は自分でPythonを使用したことがないので、これをデバッグしようとしているときに何をしているのかわかりません:D

私の知る限り、statlfileコマンドはサーバー上で実行されるため、ローカル マシンからデバッグすることはできません。サーバー上で実行しようとしpython -m win32traceutilましたが、何も表示されません。また、サーバーのmercurial構成ファイルで と を設定しようaccesslogerrorlogしましたが、それらは生成されません。

hgweb.wsgi スクリプトを使用して hg を実行しましたが、それを使用して Python デバッガーにアクセスできるかどうか、またはその方法がわかりませんが、サーバー上でデバッガーを実行できれば、問題を絞り込むことができます...

4

2 に答える 2

1

最終的にそれを理解し、拡張機能は一時ファイルをに書き込もうとしましたが%windir%\System32\config\systemprofile\AppData\Local、これがパーミッションエラーの原因でした。呼び出しはtry-catchブロックにラップされ、「ファイルが見つかりません」というエラーが返されました。

于 2012-06-23T08:12:05.840 に答える