Le navigateur Mercurial sous Windows 2003 prend plusieurs rafraîchissements avant d'afficher les référentiels


8

Lorsque vous essayez de parcourir mes référentiels Mercurial, il faut généralement plusieurs rafraîchissements avant que la liste des référentiels ne s'affiche. La configuration est la suivante:

  • Windows Server 2003 (machine dédiée hébergée par http://www.server4you.com/ .
  • Le site dispose d'une protection par mot de passe anonyme avec SSL auto-signé.
  • Mercurial 1.5.3
  • Python 2.6.5
  • Python pour Windows 32 extensions 214 py2.6
  • isapi-wsgi 0.4.2

Les référentiels sont servis via ISAPI en utilisant le fichier hgwebdir_wspi.py standard (copie à suivre).

Aussi, avant de faire un clone / push / etc, je dois d'abord parcourir les référentiels, sinon hg sur ma machine locale ne peut pas localiser le site.

Que puis-je faire pour commencer à rechercher ce problème?

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.

Le comportement que vous décrivez est étrange ... Je n'ai jamais vu Mercurial se comporter comme ça. J'ai demandé aux gens sur G + s'ils pouvaient aider. Si j'étais vous, j'écrirais mercurial@selenic.com pour voir s'il y a quelqu'un qui peut aider à déboguer cela.
Martin Geisler

Réponses:


1

Il semble que IIS 6 met en cache vos pages Web (vous n'avez pas défini si vous utilisiez Apache ou non, j'ai donc supposé que c'était un serveur Windows)

Utilisez ce lien de Microsoft et définissez le site sur Expirer immédiatement .


0

Quelque chose se cache en chemin. Utilisez curl ou wget pour obtenir la page et vérifiez les en-têtes http. Est-ce mieux sans SSL?

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.