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
#!/usr/bin/env python
"""Test the running system for features availability. Exit with zero
if all features are there, non-zero otherwise. If a feature name is
prefixed with "no-", the absence of feature is tested.
"""
from __future__ import absolute_import, print_function
import hghave
import optparse
import os
import sys
checks = hghave.checks
def list_features():
for name, feature in sorted(checks.items()):
desc = feature[1]
print(name + ':', desc)
def test_features():
failed = 0
for name, feature in checks.items():
check, _ = feature
try:
check()
except Exception as e:
print("feature %s failed: %s" % (name, e))
failed += 1
return failed
parser = optparse.OptionParser("%prog [options] [features]")
parser.add_option(
"--test-features", action="store_true", help="test available features"
)
parser.add_option(
"--list-features", action="store_true", help="list available features"
)
def _loadaddon():
if 'TESTDIR' in os.environ:
# loading from '.' isn't needed, because `hghave` should be
# running at TESTTMP in this case
path = os.environ['TESTDIR']
else:
path = '.'
if not os.path.exists(os.path.join(path, 'hghaveaddon.py')):
return
sys.path.insert(0, path)
try:
import hghaveaddon
assert hghaveaddon # silence pyflakes
except BaseException as inst:
sys.stderr.write(
'failed to import hghaveaddon.py from %r: %s\n' % (path, inst)
)
sys.exit(2)
sys.path.pop(0)
if __name__ == '__main__':
options, args = parser.parse_args()
_loadaddon()
if options.list_features:
list_features()
sys.exit(0)
if options.test_features:
sys.exit(test_features())
hghave.require(args)