# HG changeset patch # User FUJIWARA Katsunori # Date 2015-12-01 18:12:08 # Node ID 7df042d0784fe93017c766f76625ce8f77a8a6bc # Parent 6df3ec5bb813f5ec7bb80d2448606a6855c65b9e shelve: execute checkunfinished inside wlock scope Before this patch, "hg shelve" of shelve extension executes 'cmdutil.checkunfinished()' before acquisition of wlock. It may cause unintentional result, if another command runs parallelly (see also issue4368). To avoid this issue, this patch executes 'cmdutil.checkunfinished()' inside wlock scope of "hg shelve". This also fixes issue4957, because now 'cmdutil.checkunfinished()' isn't invoked at "hg shelve" with options below: --cleanup --delete --list --patch --stat diff --git a/hgext/shelve.py b/hgext/shelve.py --- a/hgext/shelve.py +++ b/hgext/shelve.py @@ -226,6 +226,7 @@ def createcmd(ui, repo, pats, opts): """subcommand that creates a new shelve""" wlock = repo.wlock() try: + cmdutil.checkunfinished(repo) return _docreatecmd(ui, repo, pats, opts) finally: lockmod.release(wlock) @@ -808,8 +809,6 @@ def shelvecmd(ui, repo, *pats, **opts): To delete specific shelved changes, use ``--delete``. To delete all shelved changes, use ``--cleanup``. ''' - cmdutil.checkunfinished(repo) - allowables = [ ('addremove', set(['create'])), # 'create' is pseudo action ('cleanup', set(['cleanup'])),