mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 00:45:18 +03:00
simplemerge: add optional context parameters to simplemerge
Rename the existing parameters for clarity. These will, in subsequent patches, allow callers to redirect reads (of the three sides of the merge) and writes (of the result) to the given contexts, instead of using the filesystem. While in most cases, the writes will go to a workingfilectx, this opens the door for it to be a memfilectx in the case of an in-memory merge. Repo will be necessary in a subsequent comit. Differential Revision: https://phab.mercurial-scm.org/D372
This commit is contained in:
parent
d6994eca65
commit
19ef3a0841
@ -408,7 +408,8 @@ def _verifytext(text, path, ui, opts):
|
||||
raise error.Abort(msg)
|
||||
return text
|
||||
|
||||
def simplemerge(ui, local, base, other, **opts):
|
||||
def simplemerge(ui, localfile, basefile, otherfile,
|
||||
localctx=None, basectx=None, otherctx=None, repo=None, **opts):
|
||||
def readfile(filename):
|
||||
f = open(filename, "rb")
|
||||
text = f.read()
|
||||
@ -421,8 +422,8 @@ def simplemerge(ui, local, base, other, **opts):
|
||||
name_b = None
|
||||
name_base = None
|
||||
else:
|
||||
name_a = local
|
||||
name_b = other
|
||||
name_a = localfile
|
||||
name_b = otherfile
|
||||
name_base = None
|
||||
labels = opts.get('label', [])
|
||||
if len(labels) > 0:
|
||||
@ -435,16 +436,16 @@ def simplemerge(ui, local, base, other, **opts):
|
||||
raise error.Abort(_("can only specify three labels."))
|
||||
|
||||
try:
|
||||
localtext = readfile(local)
|
||||
basetext = readfile(base)
|
||||
othertext = readfile(other)
|
||||
localtext = readfile(localfile)
|
||||
basetext = readfile(basefile)
|
||||
othertext = readfile(otherfile)
|
||||
except error.Abort:
|
||||
return 1
|
||||
|
||||
local = os.path.realpath(local)
|
||||
localfile = os.path.realpath(localfile)
|
||||
if not opts.get('print'):
|
||||
opener = vfsmod.vfs(os.path.dirname(local))
|
||||
out = opener(os.path.basename(local), "w", atomictemp=True)
|
||||
opener = vfsmod.vfs(os.path.dirname(localfile))
|
||||
out = opener(os.path.basename(localfile), "w", atomictemp=True)
|
||||
else:
|
||||
out = ui.fout
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user