--- a/hgext/graphlog.py Wed Apr 11 11:07:30 2012 +0200
+++ b/hgext/graphlog.py Wed Apr 11 11:14:07 2012 +0200
@@ -409,7 +409,11 @@
return [], None, None
expr, filematcher = _makelogrevset(repo, pats, opts, revs)
if expr:
- revs = revsetmod.match(repo.ui, expr)(repo, revs)
+ # Evaluate revisions in changelog order for performance
+ # reasons but preserve the original sequence order in the
+ # filtered result.
+ matched = set(revsetmod.match(repo.ui, expr)(repo, sorted(revs)))
+ revs = [r for r in revs if r in matched]
return revs, expr, filematcher
def generate(ui, dag, displayer, showparents, edgefn, getrenamed=None,