[PATCH 3 of 6] revset: avoid loop for "match.files()" having always one element for efficiency

FUJIWARA Katsunori foozy at lares.dti.ne.jp
Fri Jan 17 08:57:05 CST 2014


# HG changeset patch
# User FUJIWARA Katsunori <foozy at lares.dti.ne.jp>
# Date 1389969732 -32400
#      Fri Jan 17 23:42:12 2014 +0900
# Node ID 2a4c78d82827918ffbb7109c75e083cfdb260616
# Parent  fbeb931aa253e163ebfd44f7859f97aae7a398bf
revset: avoid loop for "match.files()" having always one element for efficiency

This patch avoids the loop for "match.files()" having always one
element in revset predicate "filelog()" for efficiency: "match" object
"m" is constructed with "[pat]" as "patterns" argument.

diff --git a/mercurial/revset.py b/mercurial/revset.py
--- a/mercurial/revset.py
+++ b/mercurial/revset.py
@@ -722,10 +722,10 @@
     s = set()
 
     if not matchmod.patkind(pat):
-        for f in m.files():
-            fl = repo.file(f)
-            for fr in fl:
-                s.add(fl.linkrev(fr))
+        f = m.files()[0]
+        fl = repo.file(f)
+        for fr in fl:
+            s.add(fl.linkrev(fr))
     else:
         for f in repo[None]:
             if m(f):


More information about the Mercurial-devel mailing list