Windows 2003上のMercurialブラウザーは、リポジトリーを表示する前にいくつかの更新を必要とします


8

Mercurialリポジトリを参照しようとすると、通常、リポジトリリストが表示されるまでに数回の更新が必要です。構成は次のとおりです。

  • Windows Server 2003(http://www.server4you.com/によってホストされる専用マシン。
  • サイトには、自己署名SSLによる匿名パスワード保護があります。
  • Mercurial 1.5.3
  • Python 2.6.5
  • Python for Windows 32拡張214 py2.6
  • isapi-wsgi 0.4.2

リポジトリは、標準のhgwebdir_wspi.pyファイルを使用してISAPI経由で提供されています(以下のコピー)。

また、クローン/プッシュなどを行う前に、最初にリポジトリを参照する必要があります。そうしないと、ローカルマシンのhgがサイトを見つけられません。

この問題の追跡を開始するにはどうすればよいですか

hgwebdir_wsgi.py

# Configuration file location
hgweb_config = r'C:\Public\Mercurial\WebSite\hgweb.config'

# Global settings for IIS path translation
path_strip = 0   # Strip this many path elements off (when using url rewrite)
path_prefix = 0  # This many path elements are prefixes (depends on the
                 # virtual path of the IIS application).

import sys

# Adjust python path if this is not a system-wide install
#sys.path.insert(0, r'c:\path\to\python\lib')

# Enable tracing. Run 'python -m win32traceutil' to debug
if hasattr(sys, 'isapidllhandle'):
    import win32traceutil

# To serve pages in local charset instead of UTF-8, remove the two lines below
import os
os.environ['HGENCODING'] = 'UTF-8'


import isapi_wsgi
from mercurial import demandimport; demandimport.enable()
from mercurial.hgweb.hgwebdir_mod import hgwebdir

# Example tweak: Replace isapi_wsgi's handler to provide better error message
# Other stuff could also be done here, like logging errors etc.
class WsgiHandler(isapi_wsgi.IsapiWsgiHandler):
    error_status = '500 Internal Server Error' # less silly error message

isapi_wsgi.IsapiWsgiHandler = WsgiHandler

# Only create the hgwebdir instance once
application = hgwebdir(hgweb_config)

def handler(environ, start_response):

    # Translate IIS's weird URLs
    url = environ['SCRIPT_NAME'] + environ['PATH_INFO']
    paths = url[1:].split('/')[path_strip:]
    script_name = '/' + '/'.join(paths[:path_prefix])
    path_info = '/'.join(paths[path_prefix:])
    if path_info:
        path_info = '/' + path_info
    environ['SCRIPT_NAME'] = script_name
    environ['PATH_INFO'] = path_info

    return application(environ, start_response)

def __ExtensionFactory__():
    return isapi_wsgi.ISAPISimpleHandler(handler)

if __name__=='__main__':
    from isapi.install import *
    params = ISAPIParameters()
    HandleCommandLine(params)

hgweb.config

[paths]
/ = C:\Public\Mercurial\Repositories\*

[web]
allow_archive = bz2 gz zip      ; Allows archive downloads.
allow_push = ########       ; Users that are allowed to push.

あなたが説明する動作は奇妙です... Mercurialがそのように動作するのを見たことがありません。G +のユーザーにサポートを求めました。私があなただったら、mercurial @ selenic.comを書いて、これをデバッグするのに役立つ誰かがいるかどうかを確認します。
マーティンガイスラー、2011

回答:


1

IIS 6がWebページをキャッシュしているようです(Apacheを使用しているかどうかを定義しなかったため、Windowsサーバーであると想定しました)。

Microsoftからのこのリンクを使用して、サイトをExpire Immediatelyに設定します。


0

途中で何かがキャッシュされます。curlまたはwgetを使用してページを取得し、httpヘッダーを確認します。SSLなしでそれは良いですか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.