diff -r 99f864b34451 -r 6db38c9d7e00 mercurial/revlog.py --- a/mercurial/revlog.py Thu Jun 21 23:56:51 2018 +0100 +++ b/mercurial/revlog.py Fri Jun 22 00:05:20 2018 +0100 @@ -1376,16 +1376,14 @@ 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.""" if start == nullrev: return True elif start == end: return True - for i in self.descendants([start]): - if i == end: - return True - elif i > end: - break - return False + return start in self._commonancestorsheads(start, end) def commonancestorsheads(self, a, b): """calculate all the heads of the common ancestors of nodes a and b"""