Mercurial > hg-stable
changeset 34680:c0a524f77e8a
merge: ensure that we always commit the mergestate
In future patches, we may halt the merge process based on configuration or
user requests by raising exceptions. We need to ensure that the mergestate
is unconditionally committed even when such an exception is raised.
Depends on D930.
Differential Revision: https://phab.mercurial-scm.org/D931
author | Ryan McElroy <rmcelroy@fb.com> |
---|---|
date | Fri, 06 Oct 2017 06:48:43 -0700 |
parents | 143337bcec9b |
children | 4dc8a2ee0f4f |
files | mercurial/merge.py |
diffstat | 1 files changed, 24 insertions(+), 22 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/merge.py Fri Oct 06 06:48:43 2017 -0700 +++ b/mercurial/merge.py Fri Oct 06 06:48:43 2017 -0700 @@ -1537,30 +1537,32 @@ newactions.append((f, args, msg)) mergeactions = newactions - # premerge - tocomplete = [] - for f, args, msg in mergeactions: - 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 - subrepo.submerge(repo, wctx, mctx, wctx.ancestor(mctx), - overwrite, labels) - continue - wctx[f].audit() - complete, r = ms.preresolve(f, wctx) - if not complete: - numupdates += 1 - tocomplete.append((f, args, msg)) + try: + # premerge + tocomplete = [] + for f, args, msg in mergeactions: + 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 + subrepo.submerge(repo, wctx, mctx, wctx.ancestor(mctx), + overwrite, labels) + continue + wctx[f].audit() + complete, r = ms.preresolve(f, wctx) + if not complete: + 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) - ms.resolve(f, wctx) + # 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) + ms.resolve(f, wctx) - ms.commit() + finally: + ms.commit() unresolved = ms.unresolvedcount()