merge: use merge.clean_update() when applicable
authorMartin von Zweigbergk <martinvonz@google.com>
Mon, 21 Sep 2020 10:09:39 -0700
changeset 45556 03726f5b6092
parent 45555 feffeb18d412
child 45557 2c86b9587740
merge: use merge.clean_update() when applicable We have had this higher-level function (higher than `merge.update()`, that is) for a while. Let's simply some callers by using it. I don't know why I didn't do this when I introduced the function. After this patch, there are no remaining callers that call `hg.updaterepo()` with `overwrite=True`. We'll clean that up soon. Differential Revision: https://phab.mercurial-scm.org/D9063
hgext/rebase.py
hgext/transplant.py
mercurial/cmdutil.py
mercurial/commands.py
mercurial/hg.py
mercurial/subrepo.py
--- a/hgext/rebase.py	Fri Sep 18 15:03:06 2020 -0700
+++ b/hgext/rebase.py	Mon Sep 21 10:09:39 2020 -0700
@@ -1099,7 +1099,7 @@
                 )
             # update to the current working revision
             # to clear interrupted merge
-            hg.updaterepo(repo, rbsrt.originalwd, overwrite=True)
+            mergemod.clean_update(repo[rbsrt.originalwd])
             rbsrt._finishrebase()
             return 0
     elif inmemory:
--- a/hgext/transplant.py	Fri Sep 18 15:03:06 2020 -0700
+++ b/hgext/transplant.py	Mon Sep 21 10:09:39 2020 -0700
@@ -476,7 +476,7 @@
         """logic to stop an interrupted transplant"""
         if self.canresume():
             startctx = repo[b'.']
-            hg.updaterepo(repo, startctx.node(), overwrite=True)
+            merge.clean_update(startctx)
             ui.status(_(b"stopped the interrupted transplant\n"))
             ui.status(
                 _(b"working directory is now at %s\n") % startctx.hex()[:12]
--- a/mercurial/cmdutil.py	Fri Sep 18 15:03:06 2020 -0700
+++ b/mercurial/cmdutil.py	Mon Sep 21 10:09:39 2020 -0700
@@ -4154,7 +4154,6 @@
         startctx = repo[b'.']
     # whether to strip or not
     cleanup = False
-    from . import hg
 
     if newnodes:
         newnodes = [repo[r].rev() for r in newnodes]
@@ -4182,7 +4181,7 @@
 
         if cleanup:
             with repo.wlock(), repo.lock():
-                hg.updaterepo(repo, startctx.node(), overwrite=True)
+                mergemod.clean_update(startctx)
                 # stripping the new nodes created
                 strippoints = [
                     c.node() for c in repo.set(b"roots(%ld)", newnodes)
@@ -4192,7 +4191,7 @@
     if not cleanup:
         # we don't update to the startnode if we can't strip
         startctx = repo[b'.']
-        hg.updaterepo(repo, startctx.node(), overwrite=True)
+        mergemod.clean_update(startctx)
 
     ui.status(_(b"graft aborted\n"))
     ui.status(_(b"working directory is now at %s\n") % startctx.hex()[:12])
--- a/mercurial/commands.py	Fri Sep 18 15:03:06 2020 -0700
+++ b/mercurial/commands.py	Mon Sep 21 10:09:39 2020 -0700
@@ -3247,7 +3247,7 @@
     if not graftstate.exists():
         raise error.Abort(_(b"no interrupted graft found"))
     pctx = repo[b'.']
-    hg.updaterepo(repo, pctx.node(), overwrite=True)
+    mergemod.clean_update(pctx)
     graftstate.delete()
     ui.status(_(b"stopped the interrupted graft\n"))
     ui.status(_(b"working directory is now at %s\n") % pctx.hex()[:12])
--- a/mercurial/hg.py	Fri Sep 18 15:03:06 2020 -0700
+++ b/mercurial/hg.py	Mon Sep 21 10:09:39 2020 -0700
@@ -1074,7 +1074,7 @@
 
 def clean(repo, node, show_stats=True, quietempty=False):
     """forcibly switch the working directory to node, clobbering changes"""
-    stats = updaterepo(repo, node, True)
+    stats = mergemod.clean_update(repo[node])
     assert stats.unresolvedcount == 0
     if show_stats:
         _showstats(repo, stats, quietempty)
--- a/mercurial/subrepo.py	Fri Sep 18 15:03:06 2020 -0700
+++ b/mercurial/subrepo.py	Mon Sep 21 10:09:39 2020 -0700
@@ -25,6 +25,7 @@
     exchange,
     logcmdutil,
     match as matchmod,
+    merge as merge,
     node,
     pathutil,
     phases,
@@ -783,7 +784,10 @@
                     % (revision[0:12], self._path)
                 )
                 repo = urepo
-        hg.updaterepo(repo, revision, overwrite)
+        if overwrite:
+            merge.clean_update(repo[revision])
+        else:
+            hg.updaterepo(repo, revision, False)
 
     @annotatesubrepoerror
     def merge(self, state):