##// END OF EJS Templates
dirstate: speed up write by 50%.
Bryan O'Sullivan -
r4374:9edc2d6f default
parent child Browse files
Show More
@@ -10,6 +10,7 b' of the GNU General Public License, incor'
10 10 from node import *
11 11 from i18n import _
12 12 import struct, os, time, bisect, stat, strutil, util, re, errno
13 import cStringIO
13 14
14 15 class dirstate(object):
15 16 format = ">cllll"
@@ -336,15 +337,17 b' class dirstate(object):'
336 337 def write(self):
337 338 if not self.dirty:
338 339 return
339 st = self.opener("dirstate", "w", atomictemp=True)
340 st.write("".join(self.pl))
341 for f, e in self.map.items():
340 cs = cStringIO.StringIO()
341 cs.write("".join(self.pl))
342 for f, e in self.map.iteritems():
342 343 c = self.copied(f)
343 344 if c:
344 345 f = f + "\0" + c
345 346 e = struct.pack(self.format, e[0], e[1], e[2], e[3], len(f))
346 st.write(e + f)
347 st.rename()
347 cs.write(e)
348 cs.write(f)
349 st = self.opener("dirstate", "w", atomic=True)
350 st.write(cs.getvalue())
348 351 self.dirty = 0
349 352
350 353 def filterfiles(self, files):
General Comments 0
You need to be logged in to leave comments. Login now