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