# HG changeset patch # User Martin von Zweigbergk # Date 2017-07-29 05:04:27 # Node ID 389f7b17ffb31ba3be61aaff6304ca6096f38f74 # Parent bbbbd3c30bfcf3e35a0d802e74c0dd2835d5f805 exchange: simplify unbundle locking using context managers Differential Revision: https://phab.mercurial-scm.org/D393 diff --git a/mercurial/exchange.py b/mercurial/exchange.py --- a/mercurial/exchange.py +++ b/mercurial/exchange.py @@ -459,7 +459,9 @@ def push(repo, remote, force=False, revs msg = 'cannot lock source repository: %s\n' % err pushop.ui.debug(msg) - try: + with wlock or util.nullcontextmanager(), \ + lock or util.nullcontextmanager(), \ + pushop.trmanager or util.nullcontextmanager(): pushop.repo.checkpush(pushop) _pushdiscovery(pushop) if not _forcebundle1(pushop): @@ -469,16 +471,6 @@ def push(repo, remote, force=False, revs _pushobsolete(pushop) _pushbookmark(pushop) - if pushop.trmanager: - pushop.trmanager.close() - finally: - if pushop.trmanager: - pushop.trmanager.release() - if lock is not None: - lock.release() - if wlock is not None: - wlock.release() - return pushop # list of steps to perform discovery before push