##// 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 class request(object):
48 class request(object):
49 def __init__(self, args, ui=None, repo=None, fin=None, fout=None,
49 def __init__(self, args, ui=None, repo=None, fin=None, fout=None,
50 ferr=None):
50 ferr=None, prereposetups=None):
51 self.args = args
51 self.args = args
52 self.ui = ui
52 self.ui = ui
53 self.repo = repo
53 self.repo = repo
@@ -57,6 +57,10 b' class request(object):'
57 self.fout = fout
57 self.fout = fout
58 self.ferr = ferr
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 def _runexithandlers(self):
64 def _runexithandlers(self):
61 exc = None
65 exc = None
62 handlers = self.ui._exithandlers
66 handlers = self.ui._exithandlers
@@ -875,7 +879,8 b' def _dispatch(req):'
875 repo.ui.ferr = ui.ferr
879 repo.ui.ferr = ui.ferr
876 else:
880 else:
877 try:
881 try:
878 repo = hg.repository(ui, path=path)
882 repo = hg.repository(ui, path=path,
883 presetupfuncs=req.prereposetups)
879 if not repo.local():
884 if not repo.local():
880 raise error.Abort(_("repository '%s' is not local")
885 raise error.Abort(_("repository '%s' is not local")
881 % path)
886 % path)
@@ -148,10 +148,12 b' def openpath(ui, path):'
148 # a list of (ui, repo) functions called for wire peer initialization
148 # a list of (ui, repo) functions called for wire peer initialization
149 wirepeersetupfuncs = []
149 wirepeersetupfuncs = []
150
150
151 def _peerorrepo(ui, path, create=False):
151 def _peerorrepo(ui, path, create=False, presetupfuncs=None):
152 """return a repository object for the specified path"""
152 """return a repository object for the specified path"""
153 obj = _peerlookup(path).instance(ui, path, create)
153 obj = _peerlookup(path).instance(ui, path, create)
154 ui = getattr(obj, "ui", ui)
154 ui = getattr(obj, "ui", ui)
155 for f in presetupfuncs or []:
156 f(ui, obj)
155 for name, module in extensions.extensions(ui):
157 for name, module in extensions.extensions(ui):
156 hook = getattr(module, 'reposetup', None)
158 hook = getattr(module, 'reposetup', None)
157 if hook:
159 if hook:
@@ -161,9 +163,9 b' def _peerorrepo(ui, path, create=False):'
161 f(ui, obj)
163 f(ui, obj)
162 return obj
164 return obj
163
165
164 def repository(ui, path='', create=False):
166 def repository(ui, path='', create=False, presetupfuncs=None):
165 """return a repository object for the specified path"""
167 """return a repository object for the specified path"""
166 peer = _peerorrepo(ui, path, create)
168 peer = _peerorrepo(ui, path, create, presetupfuncs=presetupfuncs)
167 repo = peer.local()
169 repo = peer.local()
168 if not repo:
170 if not repo:
169 raise error.Abort(_("repository '%s' is not local") %
171 raise error.Abort(_("repository '%s' is not local") %
General Comments 0
You need to be logged in to leave comments. Login now