Show More
@@ -237,6 +237,27 b' class bundlephasecache(phases.phasecache' | |||
|
237 | 237 | |
|
238 | 238 | class bundlerepository(localrepo.localrepository): |
|
239 | 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 | 261 | self._tempparent = None |
|
241 | 262 | try: |
|
242 | 263 | localrepo.localrepository.__init__(self, ui, path) |
@@ -255,22 +276,7 b' class bundlerepository(localrepo.localre' | |||
|
255 | 276 | f = util.posixfile(bundlename, "rb") |
|
256 | 277 | self.bundlefile = self.bundle = exchange.readbundle(ui, f, bundlename) |
|
257 | 278 | if self.bundle.compressed(): |
|
258 | fdtemp, temp = self.vfs.mkstemp(prefix="hg-bundle-", | |
|
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") | |
|
279 | f = _writetempbundle(self.bundle.read, '.hg10un', header='HG10UN') | |
|
274 | 280 | self.bundlefile = self.bundle = exchange.readbundle(ui, f, |
|
275 | 281 | bundlename, |
|
276 | 282 | self.vfs) |
General Comments 0
You need to be logged in to leave comments.
Login now