changeset 4372 | 9edc2d6f7c10 |
parent 4371 | abeb3edb2b4e |
child 4373 | 109077e7048d |
4371:abeb3edb2b4e | 4372:9edc2d6f7c10 |
---|---|
8 """ |
8 """ |
9 |
9 |
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" |
16 |
17 |
17 def __init__(self, opener, ui, root): |
18 def __init__(self, opener, ui, root): |
334 self.markdirty() |
335 self.markdirty() |
335 |
336 |
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): |
351 ret = {} |
354 ret = {} |
352 unknown = [] |
355 unknown = [] |