equal
deleted
inserted
replaced
133 i = blockstart / self.s |
133 i = blockstart / self.s |
134 off = 0 |
134 off = 0 |
135 for x in xrange(lend): |
135 for x in xrange(lend): |
136 if self.index[i + x] == None: |
136 if self.index[i + x] == None: |
137 b = data[off : off + self.s] |
137 b = data[off : off + self.s] |
138 e = struct.unpack(self.format, b) |
138 self.index[i + x] = b |
139 self.index[i + x] = e |
139 n = b[self.shaoffset:self.shaoffset + 20] |
140 self.map[e[-1]] = i + x |
140 self.map[n] = i + x |
141 off += self.s |
141 off += self.s |
142 |
142 |
143 def findnode(self, node): |
143 def findnode(self, node): |
144 """search backwards through the index file for a specific node""" |
144 """search backwards through the index file for a specific node""" |
145 if self.allmap: return None |
145 if self.allmap: return None |
216 if pos < 0: |
216 if pos < 0: |
217 pos += len(self.p.index) |
217 pos += len(self.p.index) |
218 self.p.loadindex(pos) |
218 self.p.loadindex(pos) |
219 return self.p.index[pos] |
219 return self.p.index[pos] |
220 def __getitem__(self, pos): |
220 def __getitem__(self, pos): |
221 return self.p.index[pos] or self.load(pos) |
221 ret = self.p.index[pos] or self.load(pos) |
|
222 if isinstance(ret, str): |
|
223 ret = struct.unpack(self.p.indexformat, ret) |
|
224 return ret |
222 def __setitem__(self, pos, item): |
225 def __setitem__(self, pos, item): |
223 self.p.index[pos] = item |
226 self.p.index[pos] = item |
224 def __delitem__(self, pos): |
227 def __delitem__(self, pos): |
225 del self.p.index[pos] |
228 del self.p.index[pos] |
226 def append(self, e): |
229 def append(self, e): |
240 self.p.loadmap() |
243 self.p.loadmap() |
241 return key in self.p.map |
244 return key in self.p.map |
242 def __iter__(self): |
245 def __iter__(self): |
243 yield nullid |
246 yield nullid |
244 for i in xrange(self.p.l): |
247 for i in xrange(self.p.l): |
245 try: |
248 ret = self.p.index[i] |
246 yield self.p.index[i][-1] |
249 if not ret: |
247 except: |
|
248 self.p.loadindex(i) |
250 self.p.loadindex(i) |
249 yield self.p.index[i][-1] |
251 ret = self.p.index[i] |
|
252 if isinstance(ret, str): |
|
253 ret = struct.unpack(self.p.indexformat, ret) |
|
254 yield ret[-1] |
250 def __getitem__(self, key): |
255 def __getitem__(self, key): |
251 try: |
256 try: |
252 return self.p.map[key] |
257 return self.p.map[key] |
253 except KeyError: |
258 except KeyError: |
254 try: |
259 try: |