আমার মার্চুরিয়াল রিপোজিটরিগুলি ব্রাউজ করার চেষ্টা করার সময় সাধারণত সংগ্রহস্থল তালিকা প্রদর্শিত হওয়ার আগে বেশ কয়েকটি সতেজতা লাগে। কনফিগারেশনটি নিম্নরূপ:
- উইন্ডোজ সার্ভার 2003 (উত্সর্গীকৃত মেশিনটি http://www.server4you.com/ দ্বারা হোস্ট করা হয়েছে ।
- স্ব-স্বাক্ষরিত এসএসএল সহ সাইটের বেনামে পাসওয়ার্ড সুরক্ষা রয়েছে।
- মার্চরিয়াল ০.৩.৩
- পাইথন 2.6.5
- উইন্ডোজ 32 এক্সটেনশনের জন্য পাইথন 214 পাই 2.6
- isapi-wsgi 0.4.2
স্ট্যান্ডার্ড hgwebdir_wspi.py ফাইল (অনুসরণ করার অনুলিপি) ব্যবহার করে সংগ্রহস্থলগুলি ISAPI এর মাধ্যমে পরিবেশন করা হচ্ছে।
ক্লোন / পুশ / ইত্যাদি করার আগে আমাকে প্রথমে সংগ্রহস্থলগুলি ব্রাউজ করতে হবে অন্যথায় আমার লোকাল মেশিনে এইচজি সাইটটি সনাক্ত করতে পারে না।
এই সমস্যাটি সন্ধান করতে আমি কী করতে পারি?
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.