diff -r 61ecabeeadb3 -r 586d7058ea48 mercurial/revset.py --- a/mercurial/revset.py Fri Oct 03 20:48:28 2014 -0700 +++ b/mercurial/revset.py Fri Oct 03 21:01:30 2014 -0700 @@ -2621,6 +2621,7 @@ gen: a generator producing the values for the generatorset. """ self._gen = gen + self._asclist = None self._cache = {} self._genlist = [] self._finished = False @@ -2712,7 +2713,13 @@ cache[item] = True genlist(item) yield item - self._finished = True + if not self._finished: + self._finished = True + asc = self._genlist[:] + asc.sort() + self._asclist = asc + self.fastasc = asc.__iter__ + self.fastdesc = asc.__reversed__ def set(self): return self