mercurial/merge.py
changeset 26618 8e6d5b7317e6
parent 26617 dfd9811c5c9b
child 26641 5c57d01fe64e
--- a/mercurial/merge.py	Sun Oct 11 20:12:12 2015 -0700
+++ b/mercurial/merge.py	Sun Oct 11 21:56:39 2015 -0700
@@ -850,9 +850,10 @@
         util.setflags(repo.wjoin(f), 'l' in flags, 'x' in flags)
         updated += 1
 
-    # merge
+    # premerge
+    tocomplete = []
     for f, args, msg in actions['m']:
-        repo.ui.debug(" %s: %s -> m\n" % (f, msg))
+        repo.ui.debug(" %s: %s -> m (premerge)\n" % (f, msg))
         z += 1
         progress(_updating, z, item=f, total=numupdates, unit=_files)
         if f == '.hgsubstate': # subrepo states need updating
@@ -861,8 +862,24 @@
             continue
         audit(f)
         complete, r = ms.preresolve(f, wctx, labels=labels)
-        if not complete:
-            r = ms.resolve(f, wctx, labels=labels)
+        if complete:
+            if r is not None and r > 0:
+                unresolved += 1
+            else:
+                if r is None:
+                    updated += 1
+                else:
+                    merged += 1
+        else:
+            numupdates += 1
+            tocomplete.append((f, args, msg))
+
+    # merge
+    for f, args, msg in tocomplete:
+        repo.ui.debug(" %s: %s -> m (merge)\n" % (f, msg))
+        z += 1
+        progress(_updating, z, item=f, total=numupdates, unit=_files)
+        r = ms.resolve(f, wctx, labels=labels)
         if r is not None and r > 0:
             unresolved += 1
         else: