Mercurial > public > mercurial-scm > hg-stable
diff mercurial/merge.py @ 26618:8e6d5b7317e6
merge.mergestate: perform all premerges before any merges (BC)
We perform all that we can non-interactively before prompting the user for input
via their merge tool. This allows for a maximally consistent state when the user
is first prompted.
The test output changes indicate the actual behavior change happening.
author | Siddharth Agarwal <sid0@fb.com> |
---|---|
date | Sun, 11 Oct 2015 21:56:39 -0700 |
parents | dfd9811c5c9b |
children | 5c57d01fe64e |
line wrap: on
line diff
--- 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: