diff --git a/contrib/revsetbenchmarks.txt b/contrib/revsetbenchmarks.txt --- a/contrib/revsetbenchmarks.txt +++ b/contrib/revsetbenchmarks.txt @@ -14,3 +14,7 @@ 0:: min(0::) roots((tip~100::) - (tip~100::tip)) ::p1(p1(tip)):: +public() +:10000 and public() +draft() +:10000 and draft() diff --git a/mercurial/revset.py b/mercurial/revset.py --- a/mercurial/revset.py +++ b/mercurial/revset.py @@ -2784,8 +2784,9 @@ class spanset(_orderedsetmixin): yield r def __contains__(self, rev): - return self._contained(rev) and not (self._hiddenrevs and rev in - self._hiddenrevs) + return (((self._end < rev <= self._start) + or (self._start <= rev < self._end)) + and not (self._hiddenrevs and rev in self._hiddenrevs)) def __nonzero__(self): for r in self: