Mercurial > public > mercurial-scm > hg
diff mercurial/dirstate.py @ 30026:ba06562a06a2
dirstate: rebuild should update dirstate properly
Updating dirstate by simply adding and dropping files from self._map doesn't
keep the other maps updated (think: _dirs, _copymap, _foldmap, _nonormalset)
thus introducing cache inconsistency.
This is also affecting the debugstate tests since now we don't even try to set
correct mode and mtime for the files because they are marked dirty anyway and
will be checked during next status call.
author | Mateusz Kwapich <mitrandir@fb.com> |
---|---|
date | Tue, 30 Aug 2016 15:16:28 -0700 |
parents | 6f447b9ec263 |
children | ad56071b37d4 |
line wrap: on
line diff
--- a/mercurial/dirstate.py Tue Sep 27 22:09:28 2016 -0700 +++ b/mercurial/dirstate.py Tue Aug 30 15:16:28 2016 -0700 @@ -680,21 +680,15 @@ self.clear() self._lastnormaltime = lastnormaltime - for f in changedfiles: - mode = 0o666 - if f in allfiles and 'x' in allfiles.flags(f): - mode = 0o777 - - if f in allfiles: - self._map[f] = dirstatetuple('n', mode, -1, 0) - else: - self._map.pop(f, None) - if f in self._nonnormalset: - self._nonnormalset.remove(f) - if self._origpl is None: self._origpl = self._pl self._pl = (parent, nullid) + for f in changedfiles: + if f in allfiles: + self.normallookup(f) + else: + self.drop(f) + self._dirty = True def write(self, tr):