mercurial/hgweb/hgweb_mod.py
changeset 5598 d534ba1c4eb4
parent 5597 e7f99a3ed008
child 5599 3de66c2a9734
equal deleted inserted replaced
5597:e7f99a3ed008 5598:d534ba1c4eb4
    10 from mercurial.node import *
    10 from mercurial.node import *
    11 from mercurial import mdiff, ui, hg, util, archival, patch
    11 from mercurial import mdiff, ui, hg, util, archival, patch
    12 from mercurial import revlog, templater
    12 from mercurial import revlog, templater
    13 from common import ErrorResponse, get_mtime, style_map, paritygen
    13 from common import ErrorResponse, get_mtime, style_map, paritygen
    14 from request import wsgirequest
    14 from request import wsgirequest
    15 import webcommands
    15 import webcommands, protocol
    16 
    16 
    17 shortcuts = {
    17 shortcuts = {
    18     'cl': [('cmd', ['changelog']), ('rev', None)],
    18     'cl': [('cmd', ['changelog']), ('rev', None)],
    19     'sl': [('cmd', ['shortlog']), ('rev', None)],
    19     'sl': [('cmd', ['shortlog']), ('rev', None)],
    20     'cs': [('cmd', ['changeset']), ('node', None)],
    20     'cs': [('cmd', ['changeset']), ('node', None)],
   175             if style != -1:
   175             if style != -1:
   176                 req.form['style'] = [cmd[:style]]
   176                 req.form['style'] = [cmd[:style]]
   177                 cmd = cmd[style+1:]
   177                 cmd = cmd[style+1:]
   178 
   178 
   179             # avoid accepting e.g. style parameter as command
   179             # avoid accepting e.g. style parameter as command
   180             if hasattr(webcommands, cmd):
   180             if hasattr(webcommands, cmd) or hasattr(protocol, cmd):
   181                 req.form['cmd'] = [cmd]
   181                 req.form['cmd'] = [cmd]
   182 
   182 
   183             if args and args[0]:
   183             if args and args[0]:
   184                 node = args.pop(0)
   184                 node = args.pop(0)
   185                 req.form['node'] = [node]
   185                 req.form['node'] = [node]
   274                 req.form['cmd'] = [self.t.cache['default']]
   274                 req.form['cmd'] = [self.t.cache['default']]
   275 
   275 
   276             cmd = req.form['cmd'][0]
   276             cmd = req.form['cmd'][0]
   277 
   277 
   278             try:
   278             try:
   279                 method = getattr(webcommands, cmd)
   279                 if hasattr(protocol, cmd):
       
   280                     method = getattr(protocol, cmd)
       
   281                 else:
       
   282                     method = getattr(webcommands, cmd)
   280                 method(self, req)
   283                 method(self, req)
   281             except revlog.LookupError, err:
   284             except revlog.LookupError, err:
   282                 req.respond(404, self.t(
   285                 req.respond(404, self.t(
   283                     'error', error='revision not found: %s' % err.name))
   286                     'error', error='revision not found: %s' % err.name))
   284             except (hg.RepoError, revlog.RevlogError), inst:
   287             except (hg.RepoError, revlog.RevlogError), inst: