filemerge: when using in-memory merge, always put backup files in temp dir
Before calling a merge tool, we create a backup of the local side of
the merge. That file can be put in the working copy or in a temporary
directory, depending on the user's config. When we're merging in
memory, we don't want to write to the actual, on-disk working copy, so
we write the file to the in-memory working copy instead. However,
since we don't support external merge tools with in-memory merge, it
makes no difference where the file is actually stored (and if we ever
do add support for external merge tools, then the file clearly can't
live in the in-memory working-copy object anyway). So, since it
doesn't matter where the file is stored, we can simplify by always
putting them in the system's temp directory.
Differential Revision: https://phab.mercurial-scm.org/D12187
from __future__ import absolute_import, print_function
import os
from mercurial import (
dispatch,
ui as uimod,
)
from mercurial.utils import stringutil
# ensure errors aren't buffered
testui = uimod.ui()
testui.pushbuffer()
testui.writenoi18n(b'buffered\n')
testui.warnnoi18n(b'warning\n')
testui.write_err(b'error\n')
print(stringutil.pprint(testui.popbuffer(), bprefix=True).decode('ascii'))
# test dispatch.dispatch with the same ui object
hgrc = open(os.environ["HGRCPATH"], 'wb')
hgrc.write(b'[extensions]\n')
hgrc.write(b'color=\n')
hgrc.close()
ui_ = uimod.ui.load()
ui_.setconfig(b'ui', b'formatted', b'True')
# we're not interested in the output, so write that to devnull
ui_.fout = open(os.devnull, 'wb')
# call some arbitrary command just so we go through
# color's wrapped _runcommand twice.
def runcmd():
dispatch.dispatch(dispatch.request([b'version', b'-q'], ui_))
runcmd()
print("colored? %s" % (ui_._colormode is not None))
runcmd()
print("colored? %s" % (ui_._colormode is not None))