unshare: use context manager for locks
Differential Revision: https://phab.mercurial-scm.org/D5695
--- a/mercurial/hg.py Fri Jan 25 21:23:16 2019 -0500
+++ b/mercurial/hg.py Thu Jan 17 09:18:48 2019 -0800
@@ -282,25 +282,20 @@
called.
"""
- destlock = None
- lock = repo.lock()
- try:
+ with repo.lock():
# we use locks here because if we race with commit, we
# can end up with extra data in the cloned revlogs that's
# not pointed to by changesets, thus causing verify to
# fail
-
destlock = copystore(ui, repo, repo.path)
-
- sharefile = repo.vfs.join('sharedpath')
- util.rename(sharefile, sharefile + '.old')
+ with destlock or util.nullcontextmanager():
- repo.requirements.discard('shared')
- repo.requirements.discard('relshared')
- repo._writerequirements()
- finally:
- destlock and destlock.release()
- lock and lock.release()
+ sharefile = repo.vfs.join('sharedpath')
+ util.rename(sharefile, sharefile + '.old')
+
+ repo.requirements.discard('shared')
+ repo.requirements.discard('relshared')
+ repo._writerequirements()
# Removing share changes some fundamental properties of the repo instance.
# So we instantiate a new repo object and operate on it rather than