# HG changeset patch # User Bryan O'Sullivan # Date 1177441371 25200 # Node ID 109077e7048dfdec1a329535b26d4914cf907408 # Parent 9edc2d6f7c10fea4373c69fab36f40ef2e48d417 When reloading the dirstate, recompute ignore information if needed. diff --git a/mercurial/dirstate.py b/mercurial/dirstate.py --- a/mercurial/dirstate.py +++ b/mercurial/dirstate.py @@ -231,6 +231,16 @@ class dirstate(object): except IOError, err: if err.errno != errno.ENOENT: raise + def reload(self): + def mtime(): + m = self.map and self.map.get('.hgignore') + return m and m[-1] + + old_mtime = self.ignorefunc and mtime() + self.read() + if old_mtime != mtime(): + self.ignorefunc = None + def copy(self, source, dest): self.lazyread() self.markdirty() diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py --- a/mercurial/localrepo.py +++ b/mercurial/localrepo.py @@ -596,7 +596,7 @@ class localrepository(repo.repository): self.ui.warn(_("no rollback information available\n")) def wreload(self): - self.dirstate.read() + self.dirstate.reload() def reload(self): self.changelog.load()