Mercurial > hg
changeset 33829:b86fc43e4b73
simplemerge: write merge result to the localctx, if passed
Differential Revision: https://phab.mercurial-scm.org/D375
author | Phil Cohen <phillco@fb.com> |
---|---|
date | Sun, 13 Aug 2017 22:46:03 -0700 |
parents | 8b91a4ff23ad |
children | aa6c290a77fa |
files | mercurial/simplemerge.py |
diffstat | 1 files changed, 19 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/simplemerge.py Sun Aug 13 20:06:52 2017 -0700 +++ b/mercurial/simplemerge.py Sun Aug 13 22:46:03 2017 -0700 @@ -413,8 +413,8 @@ """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 @@ 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 @@ 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 = {