--- a/mercurial/filemerge.py Fri Dec 01 00:07:23 2017 -0800
+++ b/mercurial/filemerge.py Fri Dec 01 00:07:23 2017 -0800
@@ -241,6 +241,12 @@
ui = repo.ui
fd = fcd.path()
+ # Avoid prompting during an in-memory merge since it doesn't support merge
+ # conflicts.
+ if fcd.changectx().isinmemory():
+ raise error.InMemoryMergeConflictsError('in-memory merge does not '
+ 'support file conflicts')
+
prompts = partextras(labels)
prompts['fd'] = fd
try:
@@ -465,11 +471,10 @@
a = _workingpath(repo, fcd)
fd = fcd.path()
- # Run ``flushall()`` to make any missing folders the following wwrite
- # calls might be depending on.
from . import context
if isinstance(fcd, context.overlayworkingfilectx):
- fcd.changectx().flushall()
+ raise error.InMemoryMergeConflictsError('in-memory merge does not '
+ 'support the :dump tool.')
util.writefile(a + ".local", fcd.decodeddata())
repo.wwrite(fd + ".other", fco.data(), fco.flags())
@@ -688,10 +693,10 @@
onfailure = _("merging %s failed!\n")
precheck = None
- # If using deferred writes, must flush any deferred contents if running
- # an external merge tool since it has arbitrary access to the working
- # copy.
- wctx.flushall()
+ if wctx.isinmemory():
+ raise error.InMemoryMergeConflictsError('in-memory merge does not '
+ 'support external merge '
+ 'tools')
toolconf = tool, toolpath, binary, symlink
@@ -710,6 +715,10 @@
if precheck and not precheck(repo, mynode, orig, fcd, fco, fca,
toolconf):
if onfailure:
+ if wctx.isinmemory():
+ raise error.InMemoryMergeConflictsError('in-memory merge does '
+ 'not support merge '
+ 'conflicts')
ui.warn(onfailure % fd)
return True, 1, False
@@ -736,6 +745,10 @@
if r:
if onfailure:
+ if wctx.isinmemory():
+ raise error.InMemoryMergeConflictsError('in-memory merge '
+ 'does not support '
+ 'merge conflicts')
ui.warn(onfailure % fd)
_onfilemergefailure(ui)