[PATCH] match: add matchesexact() method to hide internals

Martin von Zweigbergk martinvonz at google.com
Wed Mar 25 18:23:59 UTC 2015


# HG changeset patch
# User Martin von Zweigbergk <martinvonz at google.com>
# Date 1414597419 25200
#      Wed Oct 29 08:43:39 2014 -0700
# Node ID 4f9bf395f7ab9c15dc5265fe299750f8f614cbe5
# Parent  5b85a5bc5bbb9d8365953609d98e4dce7110e9b0
match: add matchesexact() method to hide internals

Comparing a function reference seems bad.

diff -r 5b85a5bc5bbb -r 4f9bf395f7ab mercurial/dirstate.py
--- a/mercurial/dirstate.py	Mon Mar 23 23:04:51 2015 -0700
+++ b/mercurial/dirstate.py	Wed Oct 29 08:43:39 2014 -0700
@@ -611,7 +611,7 @@
         dirsnotfound = []
         notfoundadd = dirsnotfound.append
 
-        if match.matchfn != match.exact and self._checkcase:
+        if not match.matchesexact() and self._checkcase:
             normalize = self._normalize
         else:
             normalize = None
@@ -711,7 +711,7 @@
         join = self._join
 
         exact = skipstep3 = False
-        if matchfn == match.exact: # match.exact
+        if match.matchesexact(): # match.exact
             exact = True
             dirignore = util.always # skip step 2
         elif match.files() and not match.anypats(): # match.match, no patterns
@@ -912,7 +912,7 @@
         if match.always():
             return dmap.keys()
         files = match.files()
-        if match.matchfn == match.exact:
+        if match.matchesexact():
             # fast path -- filter the other way around, since typically files is
             # much smaller than dmap
             return [f for f in files if f in dmap]
diff -r 5b85a5bc5bbb -r 4f9bf395f7ab mercurial/manifest.py
--- a/mercurial/manifest.py	Mon Mar 23 23:04:51 2015 -0700
+++ b/mercurial/manifest.py	Wed Oct 29 08:43:39 2014 -0700
@@ -164,7 +164,7 @@
             return self.copy()
 
         files = match.files()
-        if (len(files) < 100 and (match.matchfn == match.exact or
+        if (len(files) < 100 and (match.matchesexact() or
             (not match.anypats() and util.all(fn in self for fn in files)))):
             return self.intersectfiles(files)
 
diff -r 5b85a5bc5bbb -r 4f9bf395f7ab mercurial/match.py
--- a/mercurial/match.py	Mon Mar 23 23:04:51 2015 -0700
+++ b/mercurial/match.py	Wed Oct 29 08:43:39 2014 -0700
@@ -161,6 +161,9 @@
         - optimization might be possible and necessary.'''
         return self._always
 
+    def matchesexact(self):
+        return self.matchfn == self.exact
+
 def exact(root, cwd, files):
     return match(root, cwd, files, exact=True)
 


More information about the Mercurial-devel mailing list