diff -r acc40572da5b -r 305d4450036a mercurial/dirstate.py --- a/mercurial/dirstate.py Sat Mar 01 22:30:03 2008 +0100 +++ b/mercurial/dirstate.py Sun Mar 02 13:52:34 2008 +0100 @@ -383,8 +383,8 @@ for src, f, st in self.statwalk(files, match, badmatch=badmatch): yield src, f - def statwalk(self, files=None, match=util.always, ignored=False, - badmatch=None, directories=False): + def statwalk(self, files=None, match=util.always, unknown=True, + ignored=False, badmatch=None, directories=False): ''' walk recursively through the directory tree, finding all files matched by the match function @@ -412,6 +412,7 @@ return False return match(file_) + # TODO: don't walk unknown directories if unknown and ignored are False ignore = self._ignore dirignore = self._dirignore if ignored: @@ -527,7 +528,7 @@ if imatch(k): yield 'm', k, None - def status(self, files, match, list_ignored, list_clean): + def status(self, files, match, list_ignored, list_clean, list_unknown=True): lookup, modified, added, unknown, ignored = [], [], [], [], [] removed, deleted, clean = [], [], [] @@ -545,14 +546,15 @@ dadd = deleted.append cadd = clean.append - for src, fn, st in self.statwalk(files, match, ignored=list_ignored): + for src, fn, st in self.statwalk(files, match, unknown=list_unknown, + ignored=list_ignored): if fn in dmap: type_, mode, size, time, foo = dmap[fn] else: if (list_ignored or fn in files) and self._dirignore(fn): if list_ignored: iadd(fn) - else: + elif list_unknown: uadd(fn) continue if src == 'm':