[PATCH 5 of 6] revset: precompute filelog()

Patrick Mezard patrick at mezard.eu
Tue May 8 15:58:10 CDT 2012


# HG changeset patch
# User Patrick Mezard <patrick at mezard.eu>
# Date 1336510335 -7200
# Node ID b6067d31061796b5ea04499fd38b164699225770
# Parent  3d24bf6b15d03ed618b7a7b0e49e349e70a9c674
revset: precompute filelog()

On mozilla repository:

                         first line    total
  * hg log -r0:tip js/src/jstracer.cpp
  2.2                        0.180s   0.722s
  before                     0.286s   1.320s
  after                      0.142s   0.662s

diff --git a/mercurial/revset.py b/mercurial/revset.py
--- a/mercurial/revset.py
+++ b/mercurial/revset.py
@@ -515,6 +515,7 @@
     getargs(x, 0, 0, _("draft takes no arguments"))
     return [r for r in subset if repo._phaserev[r] == phases.draft]
 
+ at precomputed
 def filelog(repo, subset, x):
     """``filelog(pattern)``
     Changesets connected to the specified filelog.
@@ -537,7 +538,9 @@
                 for fr in fl:
                     s.add(fl.linkrev(fr))
 
-    return [r for r in subset if r in s]
+    def fn(repo, subset, x):
+        return [r for r in subset if r in s]
+    return fn
 
 def first(repo, subset, x):
     """``first(set, [n])``


More information about the Mercurial-devel mailing list