Mercurial > hg
changeset 17626:3a524b647897
context: add "descendant()" to changectx for efficient descendant examination
This patch adds "descendant()", which uses "revlog.descendant()" for
descendant examination, to changectx.
This implementation is more efficient than "new in old.descendants()"
expression, because:
- "changectx.descendants()" creates temporary "changectx" objects,
but "revlog.descendant()" doesn't
"revlog.descendant()" checks only revision numbers of descendants.
- "revlog.descendant()" stops scanning, when scanning of all
revisions less than one of examination target is finished
this can avoid useless scanning in "not descendant" case.
author | FUJIWARA Katsunori <foozy@lares.dti.ne.jp> |
---|---|
date | Tue, 18 Sep 2012 21:39:12 +0900 |
parents | b83c18204c36 |
children | 84f12b832ee8 |
files | mercurial/context.py |
diffstat | 1 files changed, 4 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/context.py Tue Sep 18 21:39:12 2012 +0900 +++ b/mercurial/context.py Tue Sep 18 21:39:12 2012 +0900 @@ -288,6 +288,10 @@ n = self._repo.changelog.ancestor(self._node, n2) return changectx(self._repo, n) + def descendant(self, other): + """True if other is descendant of this changeset""" + return self._repo.changelog.descendant(self._rev, other._rev) + def walk(self, match): fset = set(match.files()) # for dirstate.walk, files=['.'] means "walk the whole tree".