diff -r 6878eaa5a40d -r 2405b4a5964a mercurial/revlog.py --- a/mercurial/revlog.py Sun Nov 07 18:16:07 2010 +0900 +++ b/mercurial/revlog.py Sun Nov 07 18:23:48 2010 +0900 @@ -607,8 +607,14 @@ some rev in revs, i.e., each revision is *not* considered a descendant of itself. Results are ordered by revision number (a topological sort).""" + first = min(revs) + if first == nullrev: + for i in self: + yield i + return + seen = set(revs) - for i in xrange(min(revs) + 1, len(self)): + for i in xrange(first + 1, len(self)): for x in self.parentrevs(i): if x != nullrev and x in seen: seen.add(i)