debugbuilddag: use context manager for progress, locks, transaction
authorMartin von Zweigbergk <martinvonz@google.com>
Sun, 17 Jun 2018 21:47:34 -0700
changeset 38376 0d7ec620faef
parent 38375 fce1c17493db
child 38377 a73eab7d6575
debugbuilddag: use context manager for progress, locks, transaction I minor side-effect is that .hg/localtags is now written before the transaction commits. Differential Revision: https://phab.mercurial-scm.org/D3777
mercurial/debugcommands.py
--- a/mercurial/debugcommands.py	Sun Jun 17 21:44:57 2018 -0700
+++ b/mercurial/debugcommands.py	Sun Jun 17 21:47:34 2018 -0700
@@ -181,15 +181,9 @@
         initialmergedlines.append("")
 
     tags = []
-
-    wlock = lock = tr = None
     progress = ui.makeprogress(_('building'), unit=_('revisions'),
                                total=total)
-    try:
-        wlock = repo.wlock()
-        lock = repo.lock()
-        tr = repo.transaction("builddag")
-
+    with progress, repo.wlock(), repo.lock(), repo.transaction("builddag"):
         at = -1
         atbranch = 'default'
         nodeids = []
@@ -268,13 +262,9 @@
                 ui.note(('branch %s\n' % data))
                 atbranch = data
             progress.update(id)
-        tr.close()
 
         if tags:
             repo.vfs.write("localtags", "".join(tags))
-    finally:
-        progress.complete()
-        release(tr, lock, wlock)
 
 def _debugchangegroup(ui, gen, all=None, indent=0, **opts):
     indent_string = ' ' * indent