# HG changeset patch # User Phil Cohen # Date 1503635437 25200 # Node ID 61b267a99fea8d7f6b9fa6dceade50044709df1d # Parent 1915a5e809ca8a2b938e82765ce0dec1bba64cff simplemerge: stop reading from, and writing to, files We now use contexts first for everything and also pass them everywhere. Differential Revision: https://phab.mercurial-scm.org/D380 diff -r 1915a5e809ca -r 61b267a99fea mercurial/simplemerge.py --- a/mercurial/simplemerge.py Thu Aug 24 21:30:37 2017 -0700 +++ b/mercurial/simplemerge.py Thu Aug 24 21:30:37 2017 -0700 @@ -18,15 +18,12 @@ from __future__ import absolute_import -import os - from .i18n import _ from . import ( error, mdiff, pycompat, util, - vfs as vfsmod, ) class CantReprocessAndShowBase(Exception): @@ -428,13 +425,8 @@ {local|base|other}ctx are optional. If passed, they (local/base/other) will be read from and the merge result written to (local). You should pass - explicit labels in this mode since the default is to use the file paths.""" - def readfile(filename): - f = open(filename, "rb") - text = f.read() - f.close() - return _verifytext(text, filename, ui, opts) - + explicit labels in this mode since the default is to use the file paths. + """ def readctx(ctx): if not ctx: return None @@ -466,20 +458,16 @@ opts.get('label', [])) try: - localtext = readctx(localctx) if localctx else readfile(localfile) - basetext = readctx(basectx) if basectx else readfile(basefile) - othertext = readctx(otherctx) if otherctx else readfile(otherfile) + localtext = readctx(localctx) + basetext = readctx(basectx) + othertext = readctx(otherctx) except error.Abort: return 1 if opts.get('print'): out = ui.fout - elif localctx: + else: out = ctxwriter(localctx) - else: - localfile = os.path.realpath(localfile) - opener = vfsmod.vfs(os.path.dirname(localfile)) - out = opener(os.path.basename(localfile), "w", atomictemp=True) m3 = Merge3Text(basetext, localtext, othertext) extrakwargs = {