##// 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 from node import *
10 from node import *
11 from i18n import _
11 from i18n import _
12 import struct, os, time, bisect, stat, strutil, util, re, errno
12 import struct, os, time, bisect, stat, strutil, util, re, errno
13 import cStringIO
13
14
14 class dirstate(object):
15 class dirstate(object):
15 format = ">cllll"
16 format = ">cllll"
@@ -336,15 +337,17 b' class dirstate(object):'
336 def write(self):
337 def write(self):
337 if not self.dirty:
338 if not self.dirty:
338 return
339 return
339 st = self.opener("dirstate", "w", atomictemp=True)
340 cs = cStringIO.StringIO()
340 st.write("".join(self.pl))
341 cs.write("".join(self.pl))
341 for f, e in self.map.items():
342 for f, e in self.map.iteritems():
342 c = self.copied(f)
343 c = self.copied(f)
343 if c:
344 if c:
344 f = f + "\0" + c
345 f = f + "\0" + c
345 e = struct.pack(self.format, e[0], e[1], e[2], e[3], len(f))
346 e = struct.pack(self.format, e[0], e[1], e[2], e[3], len(f))
346 st.write(e + f)
347 cs.write(e)
347 st.rename()
348 cs.write(f)
349 st = self.opener("dirstate", "w", atomic=True)
350 st.write(cs.getvalue())
348 self.dirty = 0
351 self.dirty = 0
349
352
350 def filterfiles(self, files):
353 def filterfiles(self, files):
General Comments 0
You need to be logged in to leave comments. Login now