##// END OF EJS Templates
dispatch: make request accept additional reposetups...
Jun Wu -
r32379:71e735bd default
parent child Browse files
Show More
@@ -47,7 +47,7 b' from . import ('
47 47
48 48 class request(object):
49 49 def __init__(self, args, ui=None, repo=None, fin=None, fout=None,
50 ferr=None):
50 ferr=None, prereposetups=None):
51 51 self.args = args
52 52 self.ui = ui
53 53 self.repo = repo
@@ -57,6 +57,10 b' class request(object):'
57 57 self.fout = fout
58 58 self.ferr = ferr
59 59
60 # reposetups which run before extensions, useful for chg to pre-fill
61 # low-level repo state (for example, changelog) before extensions.
62 self.prereposetups = prereposetups or []
63
60 64 def _runexithandlers(self):
61 65 exc = None
62 66 handlers = self.ui._exithandlers
@@ -875,7 +879,8 b' def _dispatch(req):'
875 879 repo.ui.ferr = ui.ferr
876 880 else:
877 881 try:
878 repo = hg.repository(ui, path=path)
882 repo = hg.repository(ui, path=path,
883 presetupfuncs=req.prereposetups)
879 884 if not repo.local():
880 885 raise error.Abort(_("repository '%s' is not local")
881 886 % path)
@@ -148,10 +148,12 b' def openpath(ui, path):'
148 148 # a list of (ui, repo) functions called for wire peer initialization
149 149 wirepeersetupfuncs = []
150 150
151 def _peerorrepo(ui, path, create=False):
151 def _peerorrepo(ui, path, create=False, presetupfuncs=None):
152 152 """return a repository object for the specified path"""
153 153 obj = _peerlookup(path).instance(ui, path, create)
154 154 ui = getattr(obj, "ui", ui)
155 for f in presetupfuncs or []:
156 f(ui, obj)
155 157 for name, module in extensions.extensions(ui):
156 158 hook = getattr(module, 'reposetup', None)
157 159 if hook:
@@ -161,9 +163,9 b' def _peerorrepo(ui, path, create=False):'
161 163 f(ui, obj)
162 164 return obj
163 165
164 def repository(ui, path='', create=False):
166 def repository(ui, path='', create=False, presetupfuncs=None):
165 167 """return a repository object for the specified path"""
166 peer = _peerorrepo(ui, path, create)
168 peer = _peerorrepo(ui, path, create, presetupfuncs=presetupfuncs)
167 169 repo = peer.local()
168 170 if not repo:
169 171 raise error.Abort(_("repository '%s' is not local") %
General Comments 0
You need to be logged in to leave comments. Login now