Mercurial > hg
changeset 1276:25e5b1086624
Fix dirstate.changes for ignored directories.
Do a second walking pass to examine any leftover files in the dirstate
map that are in the .hgignore file but match our search criteria.
This fixes the case of entire directories never being examined due to
their presence in the .hgignore file, and should hopefully not add any
significant overhead.
author | Bryan O'Sullivan <bos@serpentine.com> |
---|---|
date | Sun, 18 Sep 2005 15:03:07 -0700 |
parents | a1a84dd489ff |
children | 0bf11906df28 |
files | mercurial/dirstate.py |
diffstat | 1 files changed, 12 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/dirstate.py Sun Sep 18 14:07:02 2005 -0700 +++ b/mercurial/dirstate.py Sun Sep 18 15:03:07 2005 -0700 @@ -399,8 +399,19 @@ for src, fn in self.walkhelper(files, statmatch, dc): pass + # there may be patterns in the .hgignore file that prevent us + # from examining entire directories in the dirstate map, so we + # go back and explicitly examine any matching files we've + # ignored + unexamined = [fn for fn in dc.iterkeys() + if self.ignore(fn) and match(fn)] + + for src, fn in self.walkhelper(unexamined, statmatch, dc): + pass + # anything left in dc didn't exist in the filesystem - for fn, c in [(fn, c) for fn, c in dc.items() if match(fn)]: + for fn, c in dc.iteritems(): + if not match(fn): continue if c[0] == 'r': removed.append(fn) else: