Index: mercurial/merge.py =================================================================== --- mercurial/merge.py +++ mercurial/merge.py @@ -1822,8 +1822,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 @@ -1938,7 +1939,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()) @@ -1977,7 +1978,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)