Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/commands.py @ 45550:2b339c6c6e99
merge: add a back_out() function to encapsulate update()
I've sent several earlier patches adding `merge.clean_update()`,
`merge.merge()` etc, one function for each use case. This patch
continues that work. I plan to hide the complex `update()` eventually.
Differential Revision: https://phab.mercurial-scm.org/D9064
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Mon, 21 Sep 2020 09:56:48 -0700 |
parents | 32ce4cbaec4b |
children | 03726f5b6092 |
comparison
equal
deleted
inserted
replaced
45549:68906595016c | 45550:2b339c6c6e99 |
---|---|
788 if date: | 788 if date: |
789 opts[b'date'] = dateutil.parsedate(date) | 789 opts[b'date'] = dateutil.parsedate(date) |
790 | 790 |
791 cmdutil.checkunfinished(repo) | 791 cmdutil.checkunfinished(repo) |
792 cmdutil.bailifchanged(repo) | 792 cmdutil.bailifchanged(repo) |
793 node = scmutil.revsingle(repo, rev).node() | 793 ctx = scmutil.revsingle(repo, rev) |
794 node = ctx.node() | |
794 | 795 |
795 op1, op2 = repo.dirstate.parents() | 796 op1, op2 = repo.dirstate.parents() |
796 if not repo.changelog.isancestor(node, op1): | 797 if not repo.changelog.isancestor(node, op1): |
797 raise error.Abort(_(b'cannot backout change that is not an ancestor')) | 798 raise error.Abort(_(b'cannot backout change that is not an ancestor')) |
798 | 799 |
819 rctx = scmutil.revsingle(repo, hex(parent)) | 820 rctx = scmutil.revsingle(repo, hex(parent)) |
820 if not opts.get(b'merge') and op1 != node: | 821 if not opts.get(b'merge') and op1 != node: |
821 with dirstateguard.dirstateguard(repo, b'backout'): | 822 with dirstateguard.dirstateguard(repo, b'backout'): |
822 overrides = {(b'ui', b'forcemerge'): opts.get(b'tool', b'')} | 823 overrides = {(b'ui', b'forcemerge'): opts.get(b'tool', b'')} |
823 with ui.configoverride(overrides, b'backout'): | 824 with ui.configoverride(overrides, b'backout'): |
824 stats = mergemod.update( | 825 stats = mergemod.back_out(ctx, parent=repo[parent]) |
825 repo, | |
826 parent, | |
827 branchmerge=True, | |
828 force=True, | |
829 ancestor=node, | |
830 mergeancestor=False, | |
831 ) | |
832 repo.setparents(op1, op2) | 826 repo.setparents(op1, op2) |
833 hg._showstats(repo, stats) | 827 hg._showstats(repo, stats) |
834 if stats.unresolvedcount: | 828 if stats.unresolvedcount: |
835 repo.ui.status( | 829 repo.ui.status( |
836 _(b"use 'hg resolve' to retry unresolved file merges\n") | 830 _(b"use 'hg resolve' to retry unresolved file merges\n") |