hgext/shelve.py
changeset 27287 c9ceea3f2d8e
parent 27198 7df042d0784f
child 27288 c14af2d4b08c
--- a/hgext/shelve.py	Sun Dec 06 17:07:50 2015 -0800
+++ b/hgext/shelve.py	Wed Dec 09 08:28:53 2015 +0900
@@ -616,6 +616,13 @@
        than ``maxbackups`` backups are kept, if same timestamp
        prevents from deciding exact order of them, for safety.
     """
+    wlock = repo.wlock()
+    try:
+        return _dounshelve(ui, repo, *shelved, **opts)
+    finally:
+        lockmod.release(wlock)
+
+def _dounshelve(ui, repo, *shelved, **opts):
     abortf = opts['abort']
     continuef = opts['continue']
     if not abortf and not continuef:
@@ -656,11 +663,10 @@
         raise error.Abort(_("shelved change '%s' not found") % basename)
 
     oldquiet = ui.quiet
-    wlock = lock = tr = None
+    lock = tr = None
     forcemerge = ui.backupconfig('ui', 'forcemerge')
     try:
         ui.setconfig('ui', 'forcemerge', opts.get('tool', ''), 'unshelve')
-        wlock = repo.wlock()
         lock = repo.lock()
 
         tr = repo.transaction('unshelve', report=lambda x: None)
@@ -755,7 +761,7 @@
         ui.quiet = oldquiet
         if tr:
             tr.release()
-        lockmod.release(lock, wlock)
+        lockmod.release(lock)
         ui.restoreconfig(forcemerge)
 
 @command('shelve',