Browser Mercurial pada Windows 2003 membutuhkan beberapa pembaruan sebelum menampilkan repositori


8

Ketika mencoba menelusuri repositori Mercurial saya, biasanya diperlukan beberapa penyegaran sebelum daftar repositori ditampilkan. Konfigurasi adalah sebagai berikut:

  • Windows Server 2003 (Mesin khusus di-host oleh http://www.server4you.com/ .
  • Situs memiliki perlindungan kata sandi anonim dengan SSL yang ditandatangani sendiri.
  • Mercurial 1.5.3
  • Python 2.6.5
  • Python untuk Windows 32 ekstensi 214 py2.6
  • isapi-wsgi 0.4.2

Repositori dilayani melalui ISAPI menggunakan file hgwebdir_wspi.py standar (salin untuk mengikuti).

Juga sebelum melakukan kloning / push / dll saya harus menelusuri repositori terlebih dahulu jika tidak hg pada mesin lokal saya tidak dapat menemukan situs.

Apa yang bisa saya lakukan untuk mulai melacak masalah ini?

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.

Perilaku yang Anda gambarkan itu aneh ... Saya belum pernah melihat Mercurial berperilaku seperti itu. Saya telah bertanya kepada orang-orang di G + apakah mereka dapat membantu. Jika saya jadi Anda, maka saya akan menulis mercurial@selenic.com untuk melihat apakah ada seseorang di sana yang dapat membantu men-debug ini.
Martin Geisler

Jawaban:


1

Kedengarannya seperti IIS 6 sedang melakukan caching halaman web Anda (Anda tidak menentukan apakah Anda menggunakan Apache atau tidak, jadi saya menganggapnya sebagai server Windows)

Gunakan tautan ini dari Microsoft dan atur situs untuk Segera Berakhir .


0

Ada sesuatu yang cache di jalan. Gunakan curl atau wget untuk mendapatkan halaman dan periksa header http. Apakah lebih baik tanpa ssl?

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.