615 # the backout should appear on the same branch |
615 # the backout should appear on the same branch |
616 branch = repo.dirstate.branch() |
616 branch = repo.dirstate.branch() |
617 bheads = repo.branchheads(branch) |
617 bheads = repo.branchheads(branch) |
618 rctx = scmutil.revsingle(repo, hex(parent)) |
618 rctx = scmutil.revsingle(repo, hex(parent)) |
619 if not opts.get('merge') and op1 != node: |
619 if not opts.get('merge') and op1 != node: |
620 dsguard = dirstateguard.dirstateguard(repo, 'backout') |
620 with dirstateguard.dirstateguard(repo, 'backout'): |
621 try: |
|
622 overrides = {('ui', 'forcemerge'): opts.get('tool', '')} |
621 overrides = {('ui', 'forcemerge'): opts.get('tool', '')} |
623 with ui.configoverride(overrides, 'backout'): |
622 with ui.configoverride(overrides, 'backout'): |
624 stats = mergemod.update(repo, parent, True, True, node, False) |
623 stats = mergemod.update(repo, parent, True, True, node, False) |
625 repo.setparents(op1, op2) |
624 repo.setparents(op1, op2) |
626 dsguard.close() |
625 hg._showstats(repo, stats) |
627 hg._showstats(repo, stats) |
626 if stats.unresolvedcount: |
628 if stats.unresolvedcount: |
627 repo.ui.status(_("use 'hg resolve' to retry unresolved " |
629 repo.ui.status(_("use 'hg resolve' to retry unresolved " |
628 "file merges\n")) |
630 "file merges\n")) |
629 return 1 |
631 return 1 |
|
632 finally: |
|
633 lockmod.release(dsguard) |
|
634 else: |
630 else: |
635 hg.clean(repo, node, show_stats=False) |
631 hg.clean(repo, node, show_stats=False) |
636 repo.dirstate.setbranch(branch) |
632 repo.dirstate.setbranch(branch) |
637 cmdutil.revert(ui, repo, rctx, repo.dirstate.parents()) |
633 cmdutil.revert(ui, repo, rctx, repo.dirstate.parents()) |
638 |
634 |