mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 16:57:49 +03:00
simplemerge: write merge result to the localctx, if passed
Differential Revision: https://phab.mercurial-scm.org/D375
This commit is contained in:
parent
567a5b0454
commit
69c81f7498
@ -413,8 +413,8 @@ def simplemerge(ui, localfile, basefile, otherfile,
|
||||
"""Performs the simplemerge algorithm.
|
||||
|
||||
{local|base|other}ctx are optional. If passed, they (local/base/other) will
|
||||
be read from. You should pass explicit labels in this mode since the default
|
||||
is to use the file paths."""
|
||||
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()
|
||||
@ -434,6 +434,17 @@ def simplemerge(ui, localfile, basefile, otherfile,
|
||||
return repo.wwritedata(ctx.path(),
|
||||
_verifytext(ctx.data(), ctx.path(), ui, opts))
|
||||
|
||||
class ctxwriter(object):
|
||||
def __init__(self, ctx):
|
||||
self.ctx = ctx
|
||||
self.text = ""
|
||||
|
||||
def write(self, text):
|
||||
self.text += text
|
||||
|
||||
def close(self):
|
||||
self.ctx.write(self.text, self.ctx.flags())
|
||||
|
||||
mode = opts.get('mode','merge')
|
||||
if mode == 'union':
|
||||
name_a = None
|
||||
@ -460,12 +471,14 @@ def simplemerge(ui, localfile, basefile, otherfile,
|
||||
except error.Abort:
|
||||
return 1
|
||||
|
||||
localfile = os.path.realpath(localfile)
|
||||
if not opts.get('print'):
|
||||
if opts.get('print'):
|
||||
out = ui.fout
|
||||
elif localctx:
|
||||
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)
|
||||
else:
|
||||
out = ui.fout
|
||||
|
||||
m3 = Merge3Text(basetext, localtext, othertext)
|
||||
extrakwargs = {
|
||||
|
Loading…
Reference in New Issue
Block a user