walkchangerevs: avoid match.files() in conditions
authorMartin von Zweigbergk <martinvonz@google.com>
Tue, 19 May 2015 11:34:50 -0700
changeset 25272 6c76c42a5893
parent 25271 1b1eaf1885df
child 25273 8e0e334bad42
walkchangerevs: avoid match.files() in conditions See 9789b4a7c595 (match: introduce boolean prefix() method, 2014-10-28) for reasons to avoid match.files() in conditions.
mercurial/cmdutil.py
--- a/mercurial/cmdutil.py	Thu May 21 14:20:24 2015 -0700
+++ b/mercurial/cmdutil.py	Tue May 19 11:34:50 2015 -0700
@@ -1755,7 +1755,8 @@
     if not revs:
         return []
     wanted = set()
-    slowpath = match.anypats() or (match.files() and opts.get('removed'))
+    slowpath = match.anypats() or ((match.isexact() or match.prefix()) and
+                                   opts.get('removed'))
     fncache = {}
     change = repo.changectx
 
@@ -1835,7 +1836,7 @@
     # Now that wanted is correctly initialized, we can iterate over the
     # revision range, yielding only revisions in wanted.
     def iterate():
-        if follow and not match.files():
+        if follow and match.always():
             ff = _followfilter(repo, onlyfirst=opts.get('follow_first'))
             def want(rev):
                 return ff.match(rev) and rev in wanted