Show More
@@ -237,6 +237,27 b' class bundlephasecache(phases.phasecache' | |||||
237 |
|
237 | |||
238 | class bundlerepository(localrepo.localrepository): |
|
238 | class bundlerepository(localrepo.localrepository): | |
239 | def __init__(self, ui, path, bundlename): |
|
239 | def __init__(self, ui, path, bundlename): | |
|
240 | def _writetempbundle(read, suffix, header=''): | |||
|
241 | """Write a temporary file to disk | |||
|
242 | ||||
|
243 | This is closure because we need to make sure this tracked by | |||
|
244 | self.tempfile for cleanup purposes.""" | |||
|
245 | fdtemp, temp = self.vfs.mkstemp(prefix="hg-bundle-", | |||
|
246 | suffix=".hg10un") | |||
|
247 | self.tempfile = temp | |||
|
248 | fptemp = os.fdopen(fdtemp, 'wb') | |||
|
249 | ||||
|
250 | try: | |||
|
251 | fptemp.write(header) | |||
|
252 | while True: | |||
|
253 | chunk = read(2**18) | |||
|
254 | if not chunk: | |||
|
255 | break | |||
|
256 | fptemp.write(chunk) | |||
|
257 | finally: | |||
|
258 | fptemp.close() | |||
|
259 | ||||
|
260 | return self.vfs.open(self.tempfile, mode="rb") | |||
240 | self._tempparent = None |
|
261 | self._tempparent = None | |
241 | try: |
|
262 | try: | |
242 | localrepo.localrepository.__init__(self, ui, path) |
|
263 | localrepo.localrepository.__init__(self, ui, path) | |
@@ -255,22 +276,7 b' class bundlerepository(localrepo.localre' | |||||
255 | f = util.posixfile(bundlename, "rb") |
|
276 | f = util.posixfile(bundlename, "rb") | |
256 | self.bundlefile = self.bundle = exchange.readbundle(ui, f, bundlename) |
|
277 | self.bundlefile = self.bundle = exchange.readbundle(ui, f, bundlename) | |
257 | if self.bundle.compressed(): |
|
278 | if self.bundle.compressed(): | |
258 | fdtemp, temp = self.vfs.mkstemp(prefix="hg-bundle-", |
|
279 | f = _writetempbundle(self.bundle.read, '.hg10un', header='HG10UN') | |
259 | suffix=".hg10un") |
|
|||
260 | self.tempfile = temp |
|
|||
261 | fptemp = os.fdopen(fdtemp, 'wb') |
|
|||
262 |
|
||||
263 | try: |
|
|||
264 | fptemp.write("HG10UN") |
|
|||
265 | while True: |
|
|||
266 | chunk = self.bundle.read(2**18) |
|
|||
267 | if not chunk: |
|
|||
268 | break |
|
|||
269 | fptemp.write(chunk) |
|
|||
270 | finally: |
|
|||
271 | fptemp.close() |
|
|||
272 |
|
||||
273 | f = self.vfs.open(self.tempfile, mode="rb") |
|
|||
274 | self.bundlefile = self.bundle = exchange.readbundle(ui, f, |
|
280 | self.bundlefile = self.bundle = exchange.readbundle(ui, f, | |
275 | bundlename, |
|
281 | bundlename, | |
276 | self.vfs) |
|
282 | self.vfs) |
General Comments 0
You need to be logged in to leave comments.
Login now