D1215: merge: skip subrepo state, update hooks, and updating the dirstate in IMM

phillco (Phil Cohen) phabricator at mercurial-scm.org
Thu Nov 16 01:16:25 EST 2017


phillco updated this revision to Diff 3561.

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D1215?vs=3555&id=3561

REVISION DETAIL
  https://phab.mercurial-scm.org/D1215

AFFECTED FILES
  mercurial/merge.py

CHANGE DETAILS

diff --git a/mercurial/merge.py b/mercurial/merge.py
--- a/mercurial/merge.py
+++ b/mercurial/merge.py
@@ -1825,8 +1825,9 @@
             if not force and (wc.files() or wc.deleted()):
                 raise error.Abort(_("uncommitted changes"),
                                  hint=_("use 'hg status' to list changes"))
-            for s in sorted(wc.substate):
-                wc.sub(s).bailifchanged()
+            if not wc.isinmemory():
+                for s in sorted(wc.substate):
+                    wc.sub(s).bailifchanged()
 
         elif not overwrite:
             if p1 == p2: # no-op update
@@ -1941,7 +1942,7 @@
         ### apply phase
         if not branchmerge: # just jump to the new rev
             fp1, fp2, xp1, xp2 = fp2, nullid, xp2, ''
-        if not partial:
+        if not partial and not wc.isinmemory():
             repo.hook('preupdate', throw=True, parent1=xp1, parent2=xp2)
             # note that we're in the middle of an update
             repo.vfs.write('updatestate', p2.hex())
@@ -1980,7 +1981,7 @@
 
         stats = applyupdates(repo, actions, wc, p2, overwrite, labels=labels)
 
-        if not partial:
+        if not partial and not wc.isinmemory():
             with repo.dirstate.parentchange():
                 repo.setparents(fp1, fp2)
                 recordupdates(repo, actions, branchmerge)



To: phillco, #hg-reviewers
Cc: mercurial-devel


More information about the Mercurial-devel mailing list