Mercurial > public > mercurial-scm > hg-stable
diff mercurial/context.py @ 32785:041d976b662a
context: inline makememctx (API)
I have always thought it weird that we have a helper method instead of
just using __init__. So, I ripped it out.
author | Sean Farley <sean@farley.io> |
---|---|
date | Sat, 10 Jun 2017 10:24:33 -0400 |
parents | ec302748edd8 |
children | 448fc659a430 |
line wrap: on
line diff
--- a/mercurial/context.py Fri Jun 09 13:39:13 2017 -0700 +++ b/mercurial/context.py Sat Jun 10 10:24:33 2017 -0400 @@ -385,24 +385,6 @@ return r - -def makememctx(repo, parents, text, user, date, branch, files, store, - editor=None, extra=None): - def getfilectx(repo, memctx, path): - data, mode, copied = store.getfile(path) - if data is None: - return None - islink, isexec = mode - return memfilectx(repo, path, data, islink=islink, isexec=isexec, - copied=copied, memctx=memctx) - if extra is None: - extra = {} - if branch: - extra['branch'] = encoding.fromlocal(branch) - ctx = memctx(repo, parents, text, files, getfilectx, user, - date, extra, editor) - return ctx - def _filterederror(repo, changeid): """build an exception to be raised about a filtered changeid @@ -2110,7 +2092,7 @@ _returnnoneformissingfiles = True def __init__(self, repo, parents, text, files, filectxfn, user=None, - date=None, extra=None, editor=False): + date=None, extra=None, branch=None, editor=False): super(memctx, self).__init__(repo, text, user, date, extra) self._rev = None self._node = None @@ -2119,10 +2101,14 @@ self._parents = [changectx(self._repo, p) for p in (p1, p2)] files = sorted(set(files)) self._files = files + if branch is not None: + self._extra['branch'] = encoding.fromlocal(branch) self.substate = {} - # if store is not callable, wrap it in a function - if not callable(filectxfn): + if isinstance(filectxfn, patch.filestore): + self._filectxfn = memfilefrompatch(filectxfn) + elif not callable(filectxfn): + # if store is not callable, wrap it in a function self._filectxfn = memfilefromctx(filectxfn) else: # memoizing increases performance for e.g. vcs convert scenarios.