[PATCH 1 of 4] match: make nevermatcher an exact matcher and a prefix matcher

Martin von Zweigbergk martinvonz at google.com
Mon Jul 10 17:27:41 UTC 2017


# HG changeset patch
# User Martin von Zweigbergk <martinvonz at google.com>
# Date 1499638767 25200
#      Sun Jul 09 15:19:27 2017 -0700
# Node ID 0ce91c7d311a808b253c3b4d406e137168c95130
# Parent  062c1bde178118b7c4d5abb1ead16ac8ad494280
match: make nevermatcher an exact matcher and a prefix matcher

The m.isexact() and m.prefix() methods are used by callers to
determine whether m.files() can be used for fast paths. It seems safe
to let callers to any fast paths it can that rely on the empty
m.files().

diff --git a/mercurial/match.py b/mercurial/match.py
--- a/mercurial/match.py
+++ b/mercurial/match.py
@@ -347,6 +347,17 @@
     def __init__(self, root, cwd, badfn=None):
         super(nevermatcher, self).__init__(root, cwd, badfn)
 
+    # It's a little weird to say that the nevermatcher is an exact matcher
+    # or a prefix matcher, but it seems to make sense to let callers take
+    # fast paths based on either. There will be no exact matches, nor any
+    # prefixes (files() returns []), so fast paths iterating over them should
+    # be efficient (and correct).
+    def isexact(self):
+        return True
+
+    def prefix(self):
+        return True
+
     def __repr__(self):
         return '<nevermatcher>'
 


More information about the Mercurial-devel mailing list