diff -r 528cf1a73ae5 -r c9ceea3f2d8e hgext/shelve.py --- 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',