##// END OF EJS Templates
cmdutil: convert _revertprefetch() to a generic stored file hook (API)...
cmdutil: convert _revertprefetch() to a generic stored file hook (API) This will be used by LFS to fetch required files in a group for multiple commands, prior to being accessed. That avoids the one-at-a-time fetch when the filelog wrapper goes to access it, and it is missing locally (which costs two round trips to the server.) The core command list that needs this is probably at least: - annotate - archive (which is also used by extdiff) - cat - diff - export - grep - verify (sadly) - anything that has the '{data}' template There are no core users of the revert prefetch hook, and never have been since it was introduced in 45e02cfad4bd for remotefilelog. Thanks to Yuya for figuring out a way to reliably trigger the deprecated warning. Unfortunately, it wanted to blame the caller of revert. Passing along an adjusted stack level seemed the least bad choice (although it still blames a core function). One thing to note is that the store lock isn't being held when this is called. I'm not at all familiar with remotefilelog or its locking requirements, so this may not be a big deal. Currently, LFS doesn't hold a lock when downloading files. Even though largefiles doesn't either, I'm starting to think it should, and maybe the .hg/store/lock isn't good enough to cover the globally shared cache. .. api:: The cmdutil._revertprefetch() hook point for prefetching stored files has been replaced by the command agnostic cmdutil._prefetchfiles(). The new function takes a list of files, instead of a list of lists of files.

File last commit:

r34705:c5138087 default
r35941:efbd0423 default
Show More
__init__.py
97 lines | 2.7 KiB | text/x-python | PythonLexer
Eric Hopper
Fixing up comment headers for split up code.
r2391 # hgweb/__init__.py - web interface to a mercurial repository
Eric Hopper
Moving hgweb.py into it's own module in preparation for breaking it up.
r2311 #
# Copyright 21 May 2005 - (c) 2005 Jake Edge <jake@edge2.net>
# Copyright 2005 Matt Mackall <mpm@selenic.com>
#
Martin Geisler
updated license to be explicit about GPL version 2
r8225 # This software may be used and distributed according to the terms of the
Matt Mackall
Update license to GPLv2+
r10263 # GNU General Public License version 2 or any later version.
Eric Hopper
Moving hgweb.py into it's own module in preparation for breaking it up.
r2311
Yuya Nishihara
hgweb: use absolute_import
r27046 from __future__ import absolute_import
Matt Mackall
hgweb: make hgweb.hgweb a unified interface to hgweb/hgwebdir
r10996 import os
Yuya Nishihara
hgweb: use absolute_import
r27046
Yuya Nishihara
hgweb: move httpservice object from commands module...
r27138 from ..i18n import _
from .. import (
Yuya Nishihara
hgweb: extract factory function of httpservice object...
r27139 error,
Augie Fackler
hgweb: rewrite most obviously-native-strings to be native strings...
r34705 pycompat,
Yuya Nishihara
hgweb: move httpservice object from commands module...
r27138 util,
)
Yuya Nishihara
hgweb: use absolute_import
r27046 from . import (
hgweb_mod,
hgwebdir_mod,
Yuya Nishihara
hgweb: move httpservice object from commands module...
r27138 server,
Yuya Nishihara
hgweb: use absolute_import
r27046 )
Matt Mackall
Replace demandload with new demandimport
r3877
Matt Mackall
hgweb: make hgweb.hgweb a unified interface to hgweb/hgwebdir
r10996 def hgweb(config, name=None, baseui=None):
'''create an hgweb wsgi object
config can be one of:
- repo object (single repo view)
- path to repo (single repo view)
- path to config file (multi-repo view)
- dict of virtual:real pairs (multi-repo view)
- list of virtual:real tuples (multi-repo view)
'''
if ((isinstance(config, str) and not os.path.isdir(config)) or
isinstance(config, dict) or isinstance(config, list)):
# create a multi-dir interface
return hgwebdir_mod.hgwebdir(config, baseui=baseui)
return hgweb_mod.hgweb(config, name=name, baseui=baseui)
Matt Mackall
Replace demandload with new demandimport
r3877
Matt Mackall
hgweb: make top-level prototypes mirror their callees
r10992 def hgwebdir(config, baseui=None):
return hgwebdir_mod.hgwebdir(config, baseui=baseui)
Matt Mackall
Replace demandload with new demandimport
r3877
Yuya Nishihara
hgweb: move httpservice object from commands module...
r27138 class httpservice(object):
def __init__(self, ui, app, opts):
self.ui = ui
self.app = app
self.opts = opts
def init(self):
util.setsignalhandler()
self.httpd = server.create_server(self.ui, self.app)
if self.opts['port'] and not self.ui.verbose:
return
if self.httpd.prefix:
prefix = self.httpd.prefix.strip('/') + '/'
else:
prefix = ''
Augie Fackler
hgweb: rewrite most obviously-native-strings to be native strings...
r34705 port = r':%d' % self.httpd.port
if port == r':80':
port = r''
Yuya Nishihara
hgweb: move httpservice object from commands module...
r27138
bindaddr = self.httpd.addr
Augie Fackler
hgweb: rewrite most obviously-native-strings to be native strings...
r34705 if bindaddr == r'0.0.0.0':
bindaddr = r'*'
elif r':' in bindaddr: # IPv6
bindaddr = r'[%s]' % bindaddr
Yuya Nishihara
hgweb: move httpservice object from commands module...
r27138
fqaddr = self.httpd.fqaddr
Augie Fackler
hgweb: rewrite most obviously-native-strings to be native strings...
r34705 if r':' in fqaddr:
fqaddr = r'[%s]' % fqaddr
Yuya Nishihara
hgweb: move httpservice object from commands module...
r27138 if self.opts['port']:
write = self.ui.status
else:
write = self.ui.write
write(_('listening at http://%s%s/%s (bound to %s:%d)\n') %
Augie Fackler
hgweb: rewrite most obviously-native-strings to be native strings...
r34705 (pycompat.sysbytes(fqaddr), pycompat.sysbytes(port),
prefix, pycompat.sysbytes(bindaddr), self.httpd.port))
Yuya Nishihara
hgweb: move httpservice object from commands module...
r27138 self.ui.flush() # avoid buffering of status message
def run(self):
self.httpd.serve_forever()
Yuya Nishihara
hgweb: extract factory function of httpservice object...
r27139
Yuya Nishihara
hgweb: extract app factory...
r30508 def createapp(baseui, repo, webconf):
Yuya Nishihara
hgweb: eliminate duck-typing to select hgweb or hgwebdir by command option...
r27181 if webconf:
Yuya Nishihara
hgweb: extract app factory...
r30508 return hgwebdir_mod.hgwebdir(webconf, baseui=baseui)
Yuya Nishihara
hgweb: eliminate duck-typing to select hgweb or hgwebdir by command option...
r27181 else:
Yuya Nishihara
hgweb: extract factory function of httpservice object...
r27139 if not repo:
raise error.RepoError(_("there is no Mercurial repository"
" here (.hg not found)"))
Yuya Nishihara
hgweb: extract app factory...
r30508 return hgweb_mod.hgweb(repo, baseui=baseui)