D3929: revlog: replace descendant(b, a) by isdescendantrev(a, b) (API)
martinvonz (Martin von Zweigbergk)
phabricator at mercurial-scm.org
Thu Jul 12 00:10:03 UTC 2018
martinvonz created this revision.
Herald added a reviewer: indygreg.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
The "is" is to match "isancestor" and to make it clear that it doesn't
return a descendant. The "rev" is to make it clear that it's not about
nodeids (unlike e.g. isancestor()). The argument order change is just
seems more natural (and makes isancestor() less confusing).
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D3929
AFFECTED FILES
mercurial/context.py
mercurial/revlog.py
CHANGE DETAILS
diff --git a/mercurial/revlog.py b/mercurial/revlog.py
--- a/mercurial/revlog.py
+++ b/mercurial/revlog.py
@@ -1645,18 +1645,18 @@
c.append(self.node(r))
return c
- def descendant(self, start, end):
- """True if revision 'end' is an descendant of revision 'start'
-
- A revision is considered as a descendant of itself.
+ def isdescendantrev(self, a, b):
+ """True if revision a is a descendant of revision b
+
+ A revision is considered a descendant of itself.
The implementation of this is trivial but the use of
commonancestorsheads is not."""
- if start == nullrev:
+ if b == nullrev:
return True
- elif start == end:
+ elif a == b:
return True
- return start in self._commonancestorsheads(start, end)
+ return b in self._commonancestorsheads(a, b)
def commonancestorsheads(self, a, b):
"""calculate all the heads of the common ancestors of nodes a and b"""
@@ -1673,9 +1673,11 @@
return ancs
def isancestor(self, a, b):
- """return True if node a is an ancestor of node b"""
+ """return True if node a is an ancestor of node b
+
+ A revision is considered an ancestor of itself."""
a, b = self.rev(a), self.rev(b)
- return self.descendant(a, b)
+ return self.isdescendantrev(b, a)
def ancestor(self, a, b):
"""calculate the "best" common ancestor of nodes a and b"""
diff --git a/mercurial/context.py b/mercurial/context.py
--- a/mercurial/context.py
+++ b/mercurial/context.py
@@ -591,7 +591,7 @@
def descendant(self, other):
"""True if other is descendant of this changeset"""
- return self._repo.changelog.descendant(self._rev, other._rev)
+ return self._repo.changelog.isdescendantrev(other._rev, self._rev)
def walk(self, match):
'''Generates matching file names.'''
To: martinvonz, indygreg, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list