equal
deleted
inserted
replaced
32 self.bundle = bundle |
32 self.bundle = bundle |
33 self.basemap = {} |
33 self.basemap = {} |
34 n = len(self) |
34 n = len(self) |
35 chain = None |
35 chain = None |
36 while 1: |
36 while 1: |
37 chunkdata = bundle.parsechunk(chain) |
37 chunkdata = bundle.deltachunk(chain) |
38 if not chunkdata: |
38 if not chunkdata: |
39 break |
39 break |
40 node = chunkdata['node'] |
40 node = chunkdata['node'] |
41 p1 = chunkdata['p1'] |
41 p1 = chunkdata['p1'] |
42 p2 = chunkdata['p2'] |
42 p2 = chunkdata['p2'] |
195 # dict with the mapping 'filename' -> position in the bundle |
195 # dict with the mapping 'filename' -> position in the bundle |
196 self.bundlefilespos = {} |
196 self.bundlefilespos = {} |
197 |
197 |
198 @util.propertycache |
198 @util.propertycache |
199 def changelog(self): |
199 def changelog(self): |
|
200 # consume the header if it exists |
|
201 self.bundle.changelogheader() |
200 c = bundlechangelog(self.sopener, self.bundle) |
202 c = bundlechangelog(self.sopener, self.bundle) |
201 self.manstart = self.bundle.tell() |
203 self.manstart = self.bundle.tell() |
202 return c |
204 return c |
203 |
205 |
204 @util.propertycache |
206 @util.propertycache |
205 def manifest(self): |
207 def manifest(self): |
206 self.bundle.seek(self.manstart) |
208 self.bundle.seek(self.manstart) |
|
209 # consume the header if it exists |
|
210 self.bundle.manifestheader() |
207 m = bundlemanifest(self.sopener, self.bundle, self.changelog.rev) |
211 m = bundlemanifest(self.sopener, self.bundle, self.changelog.rev) |
208 self.filestart = self.bundle.tell() |
212 self.filestart = self.bundle.tell() |
209 return m |
213 return m |
210 |
214 |
211 @util.propertycache |
215 @util.propertycache |
223 |
227 |
224 def file(self, f): |
228 def file(self, f): |
225 if not self.bundlefilespos: |
229 if not self.bundlefilespos: |
226 self.bundle.seek(self.filestart) |
230 self.bundle.seek(self.filestart) |
227 while 1: |
231 while 1: |
228 chunk = self.bundle.chunk() |
232 chunkdata = self.bundle.filelogheader() |
229 if not chunk: |
233 if not chunkdata: |
230 break |
234 break |
231 self.bundlefilespos[chunk] = self.bundle.tell() |
235 fname = chunkdata['filename'] |
|
236 self.bundlefilespos[fname] = self.bundle.tell() |
232 while 1: |
237 while 1: |
233 c = self.bundle.chunk() |
238 c = self.bundle.deltachunk(None) |
234 if not c: |
239 if not c: |
235 break |
240 break |
236 |
241 |
237 if f[0] == '/': |
242 if f[0] == '/': |
238 f = f[1:] |
243 f = f[1:] |