diff --git a/hgext/rebase.py b/hgext/rebase.py --- a/hgext/rebase.py +++ b/hgext/rebase.py @@ -642,13 +642,7 @@ cmdutil.bailifchanged(repo) self.inmemory = False self._assignworkingcopy() - mergemod._update( - repo, - p1, - branchmerge=False, - force=False, - wc=self.wctx, - ) + mergemod.update(repo[p1], wc=self.wctx) rebasenode( repo, rev, diff --git a/hgext/transplant.py b/hgext/transplant.py --- a/hgext/transplant.py +++ b/hgext/transplant.py @@ -198,9 +198,7 @@ if pulls: if source != repo: exchange.pull(repo, source.peer(), heads=pulls) - merge._update( - repo, pulls[-1], branchmerge=False, force=False - ) + merge.update(repo[pulls[-1]]) p1 = repo.dirstate.p1() pulls = [] @@ -275,7 +273,7 @@ tr.close() if pulls: exchange.pull(repo, source.peer(), heads=pulls) - merge._update(repo, pulls[-1], branchmerge=False, force=False) + merge.update(repo[pulls[-1]]) finally: self.saveseries(revmap, merges) self.transplants.write() diff --git a/mercurial/merge.py b/mercurial/merge.py --- a/mercurial/merge.py +++ b/mercurial/merge.py @@ -2056,6 +2056,28 @@ ) +def update(ctx, updatecheck=None, wc=None): + """Do a regular update to the given commit, aborting if there are conflicts. + + The 'updatecheck' argument can be used to control what to do in case of + conflicts. + + Note: This is a new, higher-level update() than the one that used to exist + in this module. That function is now called _update(). You can hopefully + replace your callers to use this new update(), or clean_update(), merge(), + revert_to(), or graft(). + """ + return _update( + ctx.repo(), + ctx.rev(), + branchmerge=False, + force=False, + labels=[b'working copy', b'destination'], + updatecheck=updatecheck, + wc=wc, + ) + + def clean_update(ctx, wc=None): """Do a clean update to the given commit.