[PATCH 1 of 2] templatekw: add utility function numrevs

Jordi Gutiérrez Hermoso jordigh at octave.org
Thu Jan 18 03:14:29 UTC 2018


# HG changeset patch
# User Jordi Gutiérrez Hermoso <jordigh at octave.org>
# Date 1516242948 18000
#      Wed Jan 17 21:35:48 2018 -0500
# Node ID 701f8a9defdc09bb63f2596e2fc426f2e78da313
# Parent  0e369eca888fc80ee980fe8200c59dc7b0024dae
templatekw: add utility function numrevs

len(repo) calls incur noticeable overhead if called for each revision
a template keyword is evaluated. We obviously can't cache __len__
functions in general because many commands modify the repo size. For
template keywords, however, the repo is read-only so we can benefit
from a cache.

diff --git a/mercurial/templatekw.py b/mercurial/templatekw.py
--- a/mercurial/templatekw.py
+++ b/mercurial/templatekw.py
@@ -852,6 +852,10 @@ def showrev(repo, ctx, templ, **args):
     """Integer. The repository-local changeset revision number."""
     return scmutil.intrev(ctx)
 
+ at util.cachefunc
+def numrevs(repo):
+    return len(repo)
+
 def showrevslist(name, revs, **args):
     """helper to generate a list of revisions in which a mapped template will
     be evaluated"""


More information about the Mercurial-devel mailing list