--- a/mercurial/dispatch.py Sat May 20 14:01:05 2017 -0700
+++ b/mercurial/dispatch.py Sat Apr 29 21:39:47 2017 -0700
@@ -47,7 +47,7 @@
class request(object):
def __init__(self, args, ui=None, repo=None, fin=None, fout=None,
- ferr=None):
+ ferr=None, prereposetups=None):
self.args = args
self.ui = ui
self.repo = repo
@@ -57,6 +57,10 @@
self.fout = fout
self.ferr = ferr
+ # reposetups which run before extensions, useful for chg to pre-fill
+ # low-level repo state (for example, changelog) before extensions.
+ self.prereposetups = prereposetups or []
+
def _runexithandlers(self):
exc = None
handlers = self.ui._exithandlers
@@ -875,7 +879,8 @@
repo.ui.ferr = ui.ferr
else:
try:
- repo = hg.repository(ui, path=path)
+ repo = hg.repository(ui, path=path,
+ presetupfuncs=req.prereposetups)
if not repo.local():
raise error.Abort(_("repository '%s' is not local")
% path)