# HG changeset patch # User Gregory Szorc # Date 1451776198 28800 # Node ID 14f5ea7cc4c23a549be95a53a7f3b18d6eea2512 # Parent 22e362da27cfca1d060e17c5bc7c04b300385f9f streamclone: use context manager for writing files These are the file writes that have the most to gain from background I/O. Plug in a context manager so I can design the background I/O mechanism with context managers in mind. diff -r 22e362da27cf -r 14f5ea7cc4c2 mercurial/streamclone.py --- a/mercurial/streamclone.py Sat Jan 02 15:19:47 2016 -0800 +++ b/mercurial/streamclone.py Sat Jan 02 15:09:58 2016 -0800 @@ -319,12 +319,12 @@ repo.ui.debug('adding %s (%s)\n' % (name, util.bytecount(size))) # for backwards compat, name was partially encoded - ofp = repo.svfs(store.decodedir(name), 'w') - for chunk in util.filechunkiter(fp, limit=size): - handled_bytes += len(chunk) - repo.ui.progress(_('clone'), handled_bytes, total=bytecount) - ofp.write(chunk) - ofp.close() + with repo.svfs(store.decodedir(name), 'w') as ofp: + for chunk in util.filechunkiter(fp, limit=size): + handled_bytes += len(chunk) + repo.ui.progress(_('clone'), handled_bytes, + total=bytecount) + ofp.write(chunk) tr.close() finally: tr.release()