diff -r 7d0c69505a66 -r 71e735bd8170 mercurial/hg.py --- a/mercurial/hg.py Sat May 20 14:01:05 2017 -0700 +++ b/mercurial/hg.py Sat Apr 29 21:39:47 2017 -0700 @@ -148,10 +148,12 @@ # a list of (ui, repo) functions called for wire peer initialization wirepeersetupfuncs = [] -def _peerorrepo(ui, path, create=False): +def _peerorrepo(ui, path, create=False, presetupfuncs=None): """return a repository object for the specified path""" obj = _peerlookup(path).instance(ui, path, create) ui = getattr(obj, "ui", ui) + for f in presetupfuncs or []: + f(ui, obj) for name, module in extensions.extensions(ui): hook = getattr(module, 'reposetup', None) if hook: @@ -161,9 +163,9 @@ f(ui, obj) return obj -def repository(ui, path='', create=False): +def repository(ui, path='', create=False, presetupfuncs=None): """return a repository object for the specified path""" - peer = _peerorrepo(ui, path, create) + peer = _peerorrepo(ui, path, create, presetupfuncs=presetupfuncs) repo = peer.local() if not repo: raise error.Abort(_("repository '%s' is not local") %