--- a/mercurial/revset.py Wed Jul 16 13:07:39 2014 -0500
+++ b/mercurial/revset.py Thu Jul 24 12:12:12 2014 -0700
@@ -2232,6 +2232,13 @@
"""Returns a new object with the substraction of the two collections.
This is part of the mandatory API for smartset."""
+ # If we are operating on 2 baseset, do the computation now since all
+ # data is available. The alternative is to involve a lazyset, which
+ # may be slow.
+ if isinstance(other, baseset):
+ other = other.set()
+ return baseset([x for x in self if x not in other])
+
return self.filter(lambda x: x not in other)
def __and__(self, other):