changeset 43713:95d2eab0a7b9

dirstate: include explicit matches in match.traversedir calls The caller should not have to register to get both explicit and non-explicit matches. Differential Revision: https://phab.mercurial-scm.org/D7439
author Martin von Zweigbergk <martinvonz@google.com>
date Fri, 15 Nov 2019 15:36:09 -0800
parents f965b1027fb0
children deacffd227e2
files mercurial/dirstate.py mercurial/merge.py
diffstat 2 files changed, 6 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/dirstate.py	Fri Nov 15 14:47:31 2019 -0800
+++ b/mercurial/dirstate.py	Fri Nov 15 15:36:09 2019 -0800
@@ -939,6 +939,11 @@
 
         # step 1: find all explicit files
         results, work, dirsnotfound = self._walkexplicit(match, subrepos)
+        if matchtdir:
+            for d in work:
+                matchtdir(d[0])
+            for d in dirsnotfound:
+                matchtdir(d)
 
         skipstep3 = skipstep3 and not (work or dirsnotfound)
         work = [d for d in work if not dirignore(d[0])]
--- a/mercurial/merge.py	Fri Nov 15 14:47:31 2019 -0800
+++ b/mercurial/merge.py	Fri Nov 15 15:36:09 2019 -0800
@@ -2676,7 +2676,6 @@
 
     # There's no API to copy a matcher. So mutate the passed matcher and
     # restore it when we're done.
-    oldexplicitdir = matcher.explicitdir
     oldtraversedir = matcher.traversedir
 
     res = []
@@ -2684,7 +2683,7 @@
     try:
         if removeemptydirs:
             directories = []
-            matcher.explicitdir = matcher.traversedir = directories.append
+            matcher.traversedir = directories.append
 
         status = repo.status(match=matcher, ignored=ignored, unknown=True)
 
@@ -2706,5 +2705,4 @@
         return res
 
     finally:
-        matcher.explicitdir = oldexplicitdir
         matcher.traversedir = oldtraversedir