largefiles: use context manager for wlock in repo.status() override
authorMartin von Zweigbergk <martinvonz@google.com>
Fri, 18 Oct 2019 21:36:19 -0700
changeset 43585 99b881195abf
parent 43584 a02e4c12ae60
child 43586 d77e8800790b
largefiles: use context manager for wlock in repo.status() override Differential Revision: https://phab.mercurial-scm.org/D7141
hgext/largefiles/reposetup.py
--- a/hgext/largefiles/reposetup.py	Fri Oct 18 17:52:19 2019 -0700
+++ b/hgext/largefiles/reposetup.py	Fri Oct 18 21:36:19 2019 -0700
@@ -18,6 +18,7 @@
     localrepo,
     match as matchmod,
     scmutil,
+    util,
 )
 
 from . import (
@@ -130,14 +131,15 @@
             if match is None:
                 match = matchmod.always()
 
-            wlock = None
             try:
-                try:
-                    # updating the dirstate is optional
-                    # so we don't wait on the lock
-                    wlock = self.wlock(False)
-                except error.LockError:
-                    pass
+                # updating the dirstate is optional
+                # so we don't wait on the lock
+                wlock = self.wlock(False)
+                gotlock = True
+            except error.LockError:
+                wlock = util.nullcontextmanager()
+                gotlock = False
+            with wlock:
 
                 # First check if paths or patterns were specified on the
                 # command line.  If there were, and they don't match any
@@ -308,13 +310,9 @@
                         for items in result
                     ]
 
-                if wlock:
+                if gotlock:
                     lfdirstate.write()
 
-            finally:
-                if wlock:
-                    wlock.release()
-
             self.lfstatus = True
             return scmutil.status(*result)