# HG changeset patch # User Benoit Boissinot # Date 1270547382 -7200 # Node ID 3492f443f57975802fc344347ed3b1c36d5bb2e1 # Parent 60b42f318a6d0bb37aec12a7a6c55dd49cbd945b dirstate: no need to iterate twice, a dict can be updated in place diff -r 60b42f318a6d -r 3492f443f579 mercurial/dirstate.py --- a/mercurial/dirstate.py Tue Apr 06 00:45:53 2010 +0200 +++ b/mercurial/dirstate.py Tue Apr 06 11:49:42 2010 +0200 @@ -391,8 +391,13 @@ # use the modification time of the newly created temporary file as the # filesystem's notion of 'now' now = int(util.fstat(st).st_mtime) - for f in self._map.keys(): - e = self._map[f] + + cs = cStringIO.StringIO() + copymap = self._copymap + pack = struct.pack + write = cs.write + write("".join(self._pl)) + for f, e in self._map.iteritems(): if e[0] == 'n' and e[3] == now: # The file was last modified "simultaneously" with the current # write to dirstate (i.e. within the same second for file- @@ -403,14 +408,9 @@ # dirstate, forcing future 'status' calls to compare the # contents of the file. This prevents mistakenly treating such # files as clean. - self._map[f] = (e[0], 0, -1, -1) # mark entry as 'unset' + e = (e[0], 0, -1, -1) # mark entry as 'unset' + self._map[f] = e - cs = cStringIO.StringIO() - copymap = self._copymap - pack = struct.pack - write = cs.write - write("".join(self._pl)) - for f, e in self._map.iteritems(): if f in copymap: f = "%s\0%s" % (f, copymap[f]) e = pack(_format, e[0], e[1], e[2], e[3], len(f))