diff -r dfd9811c5c9b -r 8e6d5b7317e6 mercurial/merge.py --- 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: