changeset 27195:84de71ec5c61

commands: execute checkunfinished and bailifchanged inside wlock scope Before this patch, "hg import" executes below before acquisition of wlock: - cmdutil.checkunfinished() - cmdutil.bailifchanged() It may cause unintentional result, if another command runs parallelly (see also issue4368). To avoid this issue, this patch executes 'cmdutil.checkunfinished()' and 'cmdutil.bailifchanged()' inside wlock scope of "hg import".
author FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
date Wed, 02 Dec 2015 03:12:08 +0900
parents 77995317b374
children 7b4a61570d61
files mercurial/commands.py
diffstat 1 files changed, 6 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/commands.py	Wed Dec 02 03:12:07 2015 +0900
+++ b/mercurial/commands.py	Wed Dec 02 03:12:08 2015 +0900
@@ -4557,11 +4557,6 @@
     if opts.get('exact') and opts.get('prefix'):
         raise error.Abort(_('cannot use --exact with --prefix'))
 
-    if update:
-        cmdutil.checkunfinished(repo)
-    if (opts.get('exact') or not opts.get('force')) and update:
-        cmdutil.bailifchanged(repo)
-
     base = opts["base"]
     wlock = dsguard = lock = tr = None
     msgs = []
@@ -4571,6 +4566,12 @@
     try:
         try:
             wlock = repo.wlock()
+
+            if update:
+                cmdutil.checkunfinished(repo)
+            if (opts.get('exact') or not opts.get('force')) and update:
+                cmdutil.bailifchanged(repo)
+
             if not opts.get('no_commit'):
                 lock = repo.lock()
                 tr = repo.transaction('import')