Patchwork [1,of,2,v2] match: add isexact() method to hide internals

login
register
mail settings
Submitter Martin von Zweigbergk
Date March 25, 2015, 8:07 p.m.
Message ID <6ffdc058428df5f53cd9.1427314029@martinvonz.mtv.corp.google.com>
Download mbox | patch
Permalink /patch/8268/
State Accepted
Commit 55c449345b103017ea464d474fa9a2650529eac7
Headers show

Comments

Martin von Zweigbergk - March 25, 2015, 8:07 p.m.
# HG changeset patch
# User Martin von Zweigbergk <martinvonz@google.com>
# Date 1414597419 25200
#      Wed Oct 29 08:43:39 2014 -0700
# Node ID 6ffdc058428df5f53cd92e0063ace45346016e2e
# Parent  5b85a5bc5bbb9d8365953609d98e4dce7110e9b0
match: add isexact() method to hide internals

Comparing a function reference seems bad.
Matt Mackall - March 25, 2015, 11:02 p.m.
On Wed, 2015-03-25 at 13:07 -0700, Martin von Zweigbergk wrote:
> # HG changeset patch
> # User Martin von Zweigbergk <martinvonz@google.com>
> # Date 1414597419 25200
> #      Wed Oct 29 08:43:39 2014 -0700
> # Node ID 6ffdc058428df5f53cd92e0063ace45346016e2e
> # Parent  5b85a5bc5bbb9d8365953609d98e4dce7110e9b0
> match: add isexact() method to hide internals

This one is queued for default, thanks.

Patch

diff -r 5b85a5bc5bbb -r 6ffdc058428d 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.isexact() 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.isexact(): # 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.isexact():
             # 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 6ffdc058428d 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.isexact() or
             (not match.anypats() and util.all(fn in self for fn in files)))):
             return self.intersectfiles(files)
 
@@ -519,7 +519,7 @@ 
             return self.copy()
 
         files = match.files()
-        if (match.matchfn == match.exact or
+        if (match.isexact() or
             (not match.anypats() and util.all(fn in self for fn in files))):
             return self.intersectfiles(files)
 
diff -r 5b85a5bc5bbb -r 6ffdc058428d 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 isexact(self):
+        return self.matchfn == self.exact
+
 def exact(root, cwd, files):
     return match(root, cwd, files, exact=True)