# HG changeset patch # User Martin von Zweigbergk # Date 1497571232 25200 # Node ID a470bbb4e3af96fb68d1550bb3614b685c3f30cc # Parent 97a4d09f51409f8df385945a8d8c765f27026b1a clonebundle: use context managers for lock and transaction diff -r 97a4d09f5140 -r a470bbb4e3af mercurial/exchange.py --- a/mercurial/exchange.py Tue Apr 11 21:38:24 2017 +0900 +++ b/mercurial/exchange.py Thu Jun 15 17:00:32 2017 -0700 @@ -1989,29 +1989,21 @@ def trypullbundlefromurl(ui, repo, url): """Attempt to apply a bundle from a URL.""" - lock = repo.lock() - try: - tr = repo.transaction('bundleurl') + with repo.lock(), repo.transaction('bundleurl') as tr: try: - try: - fh = urlmod.open(ui, url) - cg = readbundle(ui, fh, 'stream') + fh = urlmod.open(ui, url) + cg = readbundle(ui, fh, 'stream') - if isinstance(cg, bundle2.unbundle20): - bundle2.processbundle(repo, cg, lambda: tr) - elif isinstance(cg, streamclone.streamcloneapplier): - cg.apply(repo) - else: - cg.apply(repo, 'clonebundles', url) - tr.close() - return True - except urlerr.httperror as e: - ui.warn(_('HTTP error fetching bundle: %s\n') % str(e)) - except urlerr.urlerror as e: - ui.warn(_('error fetching bundle: %s\n') % e.reason) + if isinstance(cg, bundle2.unbundle20): + bundle2.processbundle(repo, cg, lambda: tr) + elif isinstance(cg, streamclone.streamcloneapplier): + cg.apply(repo) + else: + cg.apply(repo, 'clonebundles', url) + return True + except urlerr.httperror as e: + ui.warn(_('HTTP error fetching bundle: %s\n') % str(e)) + except urlerr.urlerror as e: + ui.warn(_('error fetching bundle: %s\n') % e.reason) - return False - finally: - tr.release() - finally: - lock.release() + return False