From patchwork Wed Jan 10 19:23:16 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: D1838: phase: use context managers for lock and transaction From: phabricator X-Patchwork-Id: 26646 Message-Id: To: mercurial-devel@mercurial-scm.org Date: Wed, 10 Jan 2018 19:23:16 +0000 martinvonz created this revision. Herald added a subscriber: mercurial-devel. Herald added a reviewer: hg-reviewers. REPOSITORY rHG Mercurial REVISION DETAIL https://phab.mercurial-scm.org/D1838 AFFECTED FILES mercurial/commands.py CHANGE DETAILS To: martinvonz, #hg-reviewers Cc: mercurial-devel diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -3854,18 +3854,14 @@ revs = scmutil.revrange(repo, revs) - lock = None ret = 0 if targetphase is None: # display for r in revs: ctx = repo[r] ui.write('%i: %s\n' % (ctx.rev(), ctx.phasestr())) else: - tr = None - lock = repo.lock() - try: - tr = repo.transaction("phase") + with repo.lock(), repo.transaction("phase") as tr: # set phase if not revs: raise error.Abort(_('empty revision set')) @@ -3878,11 +3874,6 @@ phases.advanceboundary(repo, tr, targetphase, nodes) if opts['force']: phases.retractboundary(repo, tr, targetphase, nodes) - tr.close() - finally: - if tr is not None: - tr.release() - lock.release() getphase = unfi._phasecache.phase newdata = [getphase(unfi, r) for r in unfi] changes = sum(newdata[r] != olddata[r] for r in unfi)