Mercurial > public > mercurial-scm > hg-stable
diff mercurial/dirstate.py @ 27176:54ace3372f84
dirstate: change debugrebuilddirstate --minimal to use dirstate.rebuild
When debugrebuilddirstate --minimal is called, rebuilding the dirstate was done
outside of the appropriate rebuild function. This patch makes
debugrebuilddirstate use dirstate.rebuild.
This was done to allow our extension to become aware debugrebuilddirstate
--minimal
author | Christian Delahousse <cdelahousse@fb.com> |
---|---|
date | Mon, 30 Nov 2015 11:23:15 -0800 |
parents | 448cbdab5883 |
children | 6c6b48aca328 |
line wrap: on
line diff
--- a/mercurial/dirstate.py Tue Dec 01 10:52:36 2015 -0800 +++ b/mercurial/dirstate.py Mon Nov 30 11:23:15 2015 -0800 @@ -639,17 +639,22 @@ def rebuild(self, parent, allfiles, changedfiles=None): if changedfiles is None: + # Rebuild entire dirstate changedfiles = allfiles - oldmap = self._map - self.clear() - for f in allfiles: - if f not in changedfiles: - self._map[f] = oldmap[f] + lastnormaltime = self._lastnormaltime + 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: - if 'x' in allfiles.flags(f): - self._map[f] = dirstatetuple('n', 0o777, -1, 0) - else: - self._map[f] = dirstatetuple('n', 0o666, -1, 0) + self._map.pop(f, None) + self._pl = (parent, nullid) self._dirty = True