Mercurial > hg
changeset 43764:f9068413bd0c
changectx: use unfiltered changelog to access parents of unfiltered revs
If a revision is not filtered, we know that its parents are not either. So we
can take a shortcut. This shortcut avoid the computation of all filtered revs in
some cases.
Differential Revision: https://phab.mercurial-scm.org/D7487
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Sun, 17 Nov 2019 08:50:21 +0100 |
parents | 3fd6ec54704c |
children | e89e3275f658 |
files | mercurial/context.py tests/test-repo-filters-tiptoe.t |
diffstat | 2 files changed, 6 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/context.py Sat Nov 23 16:49:34 2019 -0800 +++ b/mercurial/context.py Sun Nov 17 08:50:21 2019 +0100 @@ -523,7 +523,12 @@ @propertycache def _parents(self): repo = self._repo - p1, p2 = repo.changelog.parentrevs(self._rev) + if self._maybe_filtered: + cl = repo.changelog + else: + cl = repo.unfiltered().changelog + + p1, p2 = cl.parentrevs(self._rev) if p2 == nullrev: return [repo[p1]] return [repo[p1], repo[p2]]