phillco created this revision. Herald added a subscriber: mercurial-devel. Herald added a reviewer: hg-reviewers.
REVISION SUMMARY In the next patch we'll make this function only take contexts, and also make contrib/simplemerge work by having it pass fake context-like objects. In order for those fake objects to work, simplemerge needs to know not to run the repo decoding filters on them -- the data will already be decoded, coming off the filesystem, and we won't have the repo object -- hence this flag. REPOSITORY rHG Mercurial REVISION DETAIL https://phab.mercurial-scm.org/D377 AFFECTED FILES mercurial/simplemerge.py CHANGE DETAILS diff --git a/mercurial/simplemerge.py b/mercurial/simplemerge.py --- a/mercurial/simplemerge.py +++ b/mercurial/simplemerge.py @@ -423,12 +423,17 @@ return [name_a, name_b, name_base] def simplemerge(ui, localfile, basefile, otherfile, - localctx=None, basectx=None, otherctx=None, repo=None, **opts): + localctx=None, basectx=None, otherctx=None, repo=None, + filtereddata=False, **opts): """Performs the simplemerge algorithm. {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.""" + explicit labels in this mode since the default is to use the file paths. + + filtereddata should only be True if the data() in your context returns + decoded data. + """ def readfile(filename): f = open(filename, "rb") text = f.read() @@ -438,15 +443,19 @@ def readctx(ctx): if not ctx: return None - if not repo: - raise error.ProgrammingError('simplemerge: repo must be passed if ' - 'using contexts') - # `wwritedata` is used to get the post-filter data from `ctx` (i.e., - # what would have been in the working copy). Since merges were run in - # the working copy, and thus used post-filter data, we do the same to - # maintain behavior. - return repo.wwritedata(ctx.path(), - _verifytext(ctx.data(), ctx.path(), ui, opts)) + if filtereddata: + return _verifytext(ctx.data(), ctx.path(), ui, opts) + else: + if not repo: + raise error.ProgrammingError('simplemerge: repo must be passed ' + 'if using contexts and ' + 'filtereddata is False.') + # `wwritedata` is used to get the post-filter data from `ctx` (i.e., + # what would have been in the working copy). Since merges were run + # in the working copy, and thus used post-filter data, we do the + # same to maintain behavior. + text = _verifytext(ctx.data(), ctx.path(), ui, opts) + return repo.wwritedata(ctx.path(), text) class ctxwriter(object): def __init__(self, ctx): To: phillco, #hg-reviewers Cc: mercurial-devel _______________________________________________ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel