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