Show More
@@ -264,24 +264,6 b' def _getfilestarts(bundle):' | |||
|
264 | 264 | |
|
265 | 265 | class bundlerepository(localrepo.localrepository): |
|
266 | 266 | def __init__(self, ui, path, bundlename): |
|
267 | def _writetempbundle(read, suffix, header=''): | |
|
268 | """Write a temporary file to disk | |
|
269 | ||
|
270 | This is closure because we need to make sure this tracked by | |
|
271 | self.tempfile for cleanup purposes.""" | |
|
272 | fdtemp, temp = self.vfs.mkstemp(prefix="hg-bundle-", | |
|
273 | suffix=".hg10un") | |
|
274 | self.tempfile = temp | |
|
275 | ||
|
276 | with os.fdopen(fdtemp, pycompat.sysstr('wb')) as fptemp: | |
|
277 | fptemp.write(header) | |
|
278 | while True: | |
|
279 | chunk = read(2**18) | |
|
280 | if not chunk: | |
|
281 | break | |
|
282 | fptemp.write(chunk) | |
|
283 | ||
|
284 | return self.vfs.open(self.tempfile, mode="rb") | |
|
285 | 267 | self._tempparent = None |
|
286 | 268 | try: |
|
287 | 269 | localrepo.localrepository.__init__(self, ui, path) |
@@ -314,7 +296,7 b' class bundlerepository(localrepo.localre' | |||
|
314 | 296 | msg = _('Unsupported changegroup version: %s') |
|
315 | 297 | raise error.Abort(msg % version) |
|
316 | 298 | if self.bundle.compressed(): |
|
317 | cgstream = _writetempbundle(part.read, | |
|
299 | cgstream = self._writetempbundle(part.read, | |
|
318 | 300 | ".cg%sun" % version) |
|
319 | 301 | |
|
320 | 302 | if cgstream is None: |
@@ -324,7 +306,8 b' class bundlerepository(localrepo.localre' | |||
|
324 | 306 | self.bundle = changegroup.getunbundler(version, cgstream, 'UN') |
|
325 | 307 | |
|
326 | 308 | elif self.bundle.compressed(): |
|
327 |
f = _writetempbundle(self.bundle.read, '.hg10un', |
|
|
309 | f = self._writetempbundle(self.bundle.read, '.hg10un', | |
|
310 | header='HG10UN') | |
|
328 | 311 | self.bundlefile = self.bundle = exchange.readbundle(ui, f, |
|
329 | 312 | bundlename, |
|
330 | 313 | self.vfs) |
@@ -336,6 +319,23 b' class bundlerepository(localrepo.localre' | |||
|
336 | 319 | phases.retractboundary(self, None, phases.draft, |
|
337 | 320 | [ctx.node() for ctx in self[self.firstnewrev:]]) |
|
338 | 321 | |
|
322 | def _writetempbundle(self, readfn, suffix, header=''): | |
|
323 | """Write a temporary file to disk | |
|
324 | """ | |
|
325 | fdtemp, temp = self.vfs.mkstemp(prefix="hg-bundle-", | |
|
326 | suffix=".hg10un") | |
|
327 | self.tempfile = temp | |
|
328 | ||
|
329 | with os.fdopen(fdtemp, pycompat.sysstr('wb')) as fptemp: | |
|
330 | fptemp.write(header) | |
|
331 | while True: | |
|
332 | chunk = readfn(2**18) | |
|
333 | if not chunk: | |
|
334 | break | |
|
335 | fptemp.write(chunk) | |
|
336 | ||
|
337 | return self.vfs.open(self.tempfile, mode="rb") | |
|
338 | ||
|
339 | 339 | @localrepo.unfilteredpropertycache |
|
340 | 340 | def _phasecache(self): |
|
341 | 341 | return bundlephasecache(self, self._phasedefaults) |
General Comments 0
You need to be logged in to leave comments.
Login now