Mercurial > public > mercurial-scm > hg
diff mercurial/context.py @ 24415:1cfded2fa1a9
merge with stable
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Fri, 20 Mar 2015 17:30:38 -0500 |
parents | 82b82168d045 5a12ef618c03 |
children | 065b886f61c6 |
line wrap: on
line diff
--- a/mercurial/context.py Fri Mar 20 16:39:07 2015 -0500 +++ b/mercurial/context.py Fri Mar 20 17:30:38 2015 -0500 @@ -775,13 +775,19 @@ # hack to reuse ancestor computation when searching for renames memberanc = getattr(self, '_ancestrycontext', None) iteranc = None + if srcrev is None: + # wctx case, used by workingfilectx during mergecopy + revs = [p.rev() for p in self._repo[None].parents()] + inclusive = True # we skipped the real (revless) source + else: + revs = [srcrev] if memberanc is None: - memberanc = iteranc = cl.ancestors([srcrev], lkr, + memberanc = iteranc = cl.ancestors(revs, lkr, inclusive=inclusive) # check if this linkrev is an ancestor of srcrev if lkr not in memberanc: if iteranc is None: - iteranc = cl.ancestors([srcrev], lkr, inclusive=inclusive) + iteranc = cl.ancestors(revs, lkr, inclusive=inclusive) for a in iteranc: ac = cl.read(a) # get changeset data (we avoid object creation) if path in ac[3]: # checking the 'files' field. @@ -914,6 +920,8 @@ introrev = self.introrev() if self.rev() != introrev: base = self.filectx(self.filenode(), changeid=introrev) + ac = self._repo.changelog.ancestors([introrev], inclusive=True) + base._ancestrycontext = ac # This algorithm would prefer to be recursive, but Python is a # bit recursion-hostile. Instead we do an iterative