Mercurial > hg
changeset 23984:2896f53509a7 stable
filectx: use _descendantrev in parents()
This lets us be lazy about linkrev adjustments when tracing history.
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Sun, 01 Feb 2015 16:33:45 -0600 |
parents | ff070a53ee74 |
children | fbdd5195528f |
files | mercurial/context.py |
diffstat | 1 files changed, 8 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/context.py Sun Feb 01 16:26:35 2015 -0600 +++ b/mercurial/context.py Sun Feb 01 16:33:45 2015 -0600 @@ -835,11 +835,15 @@ # If self is associated with a changeset (probably explicitly # fed), ensure the created filectx is associated with a # changeset that is an ancestor of self.changectx. - rev = self._adjustlinkrev(path, l, fnode, self.rev()) - fctx = filectx(self._repo, path, fileid=fnode, filelog=l, - changeid=rev) + # This lets us later use _adjustlinkrev to get a correct link. + fctx = filectx(self._repo, path, fileid=fnode, filelog=l) + fctx._descendantrev = self.rev() fctx._ancestrycontext = getattr(self, '_ancestrycontext', None) - + elif '_descendantrev' in vars(self): + # Otherwise propagate _descendantrev if we have one associated. + fctx = filectx(self._repo, path, fileid=fnode, filelog=l) + fctx._descendantrev = self._descendantrev + fctx._ancestrycontext = getattr(self, '_ancestrycontext', None) else: fctx = filectx(self._repo, path, fileid=fnode, filelog=l) ret.append(fctx)