changeset 6588:10c23c1d5f33

walk: use match.dir in statwalk
author Matt Mackall <mpm@selenic.com>
date Mon, 12 May 2008 11:37:08 -0500
parents a259e217bc0c
children 0f98cae7c77f
files hgext/purge.py mercurial/dirstate.py
diffstat 2 files changed, 8 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/hgext/purge.py	Mon May 12 11:37:08 2008 -0500
+++ b/hgext/purge.py	Mon May 12 11:37:08 2008 -0500
@@ -86,11 +86,10 @@
     files = []
     missing = []
     match = cmdutil.match(repo, dirs, opts)
+    match.dir = directories.append
     for src, f, st in repo.dirstate.statwalk(match.files(), match,
-                                             ignored=ignored, directories=True):
-        if src == 'd':
-            directories.append(f)
-        elif src == 'm':
+                                             ignored=ignored):
+        if src == 'm':
             missing.append(f)
         elif src == 'f' and f not in repo.dirstate:
             files.append(f)
--- a/mercurial/dirstate.py	Mon May 12 11:37:08 2008 -0500
+++ b/mercurial/dirstate.py	Mon May 12 11:37:08 2008 -0500
@@ -422,7 +422,7 @@
             yield f
 
     def statwalk(self, files, match, unknown=True,
-                 ignored=False, badfn=None, directories=False):
+                 ignored=False, badfn=None):
         '''
         walk recursively through the directory tree, finding all files
         matched by the match function
@@ -430,7 +430,6 @@
         results are yielded in a tuple (src, filename, st), where src
         is one of:
         'f' the file was found in the directory tree
-        'd' the file is a directory of the tree
         'm' the file was only in the dirstate and not in the tree
 
         and st is the stat result if the file was found in the directory.
@@ -485,8 +484,8 @@
             wadd = work.append
             found = []
             add = found.append
-            if directories:
-                add((normpath(s[common_prefix_len:]), 'd', lstat(s)))
+            if hasattr(match, 'dir'):
+                match.dir(normpath(s[common_prefix_len:]))
             while work:
                 top = work.pop()
                 entries = listdir(top, stat=True)
@@ -513,8 +512,8 @@
                     if kind == stat.S_IFDIR:
                         if not ignore(np):
                             wadd(p)
-                            if directories:
-                                add((np, 'd', st))
+                            if hasattr(match, 'dir'):
+                                match.dir(np)
                         if np in dc and match(np):
                             add((np, 'm', st))
                     elif imatch(np):