equal
deleted
inserted
replaced
12 from i18n import gettext as _ |
12 from i18n import gettext as _ |
13 from demandload import * |
13 from demandload import * |
14 demandload(globals(), "time bisect stat util re errno") |
14 demandload(globals(), "time bisect stat util re errno") |
15 |
15 |
16 class dirstate(object): |
16 class dirstate(object): |
|
17 format = ">cllll" |
|
18 |
17 def __init__(self, opener, ui, root): |
19 def __init__(self, opener, ui, root): |
18 self.opener = opener |
20 self.opener = opener |
19 self.root = root |
21 self.root = root |
20 self.dirty = 0 |
22 self.dirty = 0 |
21 self.ui = ui |
23 self.ui = ui |
162 except: return |
164 except: return |
163 |
165 |
164 self.pl = [st[:20], st[20: 40]] |
166 self.pl = [st[:20], st[20: 40]] |
165 |
167 |
166 pos = 40 |
168 pos = 40 |
|
169 e_size = struct.calcsize(self.format) |
167 while pos < len(st): |
170 while pos < len(st): |
168 e = struct.unpack(">cllll", st[pos:pos+17]) |
171 e = struct.unpack(self.format, st[pos:pos+e_size]) |
169 l = e[4] |
172 l = e[4] |
170 pos += 17 |
173 pos += e_size |
171 f = st[pos:pos + l] |
174 f = st[pos:pos + l] |
172 if '\0' in f: |
175 if '\0' in f: |
173 f, c = f.split('\0') |
176 f, c = f.split('\0') |
174 self.copies[f] = c |
177 self.copies[f] = c |
175 self.map[f] = e[:4] |
178 self.map[f] = e[:4] |
239 st.write("".join(self.pl)) |
242 st.write("".join(self.pl)) |
240 for f, e in self.map.items(): |
243 for f, e in self.map.items(): |
241 c = self.copied(f) |
244 c = self.copied(f) |
242 if c: |
245 if c: |
243 f = f + "\0" + c |
246 f = f + "\0" + c |
244 e = struct.pack(">cllll", e[0], e[1], e[2], e[3], len(f)) |
247 e = struct.pack(self.format, e[0], e[1], e[2], e[3], len(f)) |
245 st.write(e + f) |
248 st.write(e + f) |
246 self.dirty = 0 |
249 self.dirty = 0 |
247 |
250 |
248 def filterfiles(self, files): |
251 def filterfiles(self, files): |
249 ret = {} |
252 ret = {} |