Patchwork D7439: dirstate: include explicit matches in match.traversedir calls

login
register
mail settings
Submitter phabricator
Date Nov. 19, 2019, 1:14 p.m.
Message ID <a562863264f909a19b3d120cf60a682e@localhost.localdomain>
Download mbox | patch
Permalink /patch/43357/
State Not Applicable
Headers show

Comments

phabricator - Nov. 19, 2019, 1:14 p.m.
Closed by commit rHG95d2eab0a7b9: dirstate: include explicit matches in match.traversedir calls (authored by martinvonz).
martinvonz marked an inline comment as done.
This revision was automatically updated to reflect the committed changes.

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D7439?vs=18174&id=18236

CHANGES SINCE LAST ACTION
  https://phab.mercurial-scm.org/D7439/new/

REVISION DETAIL
  https://phab.mercurial-scm.org/D7439

AFFECTED FILES
  mercurial/dirstate.py
  mercurial/merge.py

CHANGE DETAILS




To: martinvonz, #hg-reviewers, Alphare, pulkit
Cc: Alphare, mercurial-devel

Patch

diff --git a/mercurial/merge.py b/mercurial/merge.py
--- a/mercurial/merge.py
+++ b/mercurial/merge.py
@@ -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
diff --git a/mercurial/dirstate.py b/mercurial/dirstate.py
--- a/mercurial/dirstate.py
+++ b/mercurial/dirstate.py
@@ -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])]