# HG changeset patch # User Pierre-Yves David # Date 1433481032 25200 # Node ID 2bbfc2042d939972e51e2e549f5f48cdb4debba3 # Parent b5311068077e45ccc579218c038c8f10fbb13288 dirstate: avoid invalidating every entries when list is empty Default value was not tested with 'is None', this made empty list seen as default value and result the invalidation of every single entry in the dirstate. On repos with hundred of thousand of files, this results in minutes of lookup time instead nothing. This is a text book example of why we should test 'is None' if this is what we mean. diff -r b5311068077e -r 2bbfc2042d93 mercurial/dirstate.py --- a/mercurial/dirstate.py Mon Jun 01 22:34:01 2015 -0700 +++ b/mercurial/dirstate.py Thu Jun 04 22:10:32 2015 -0700 @@ -572,7 +572,8 @@ self._dirty = True def rebuild(self, parent, allfiles, changedfiles=None): - changedfiles = changedfiles or allfiles + if changedfiles is None: + changedfiles = allfiles oldmap = self._map self.clear() for f in allfiles: