From patchwork Thu Aug 17 18:29:31 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: D378: contrib: make simplemerge script pass context-like objects From: phabricator X-Patchwork-Id: 23102 Message-Id: <9abd1199525809c36507623aa86c35f6@localhost.localdomain> To: mercurial-devel@mercurial-scm.org Date: Thu, 17 Aug 2017 18:29:31 +0000 phillco updated this revision to Diff 1038. REPOSITORY rHG Mercurial CHANGES SINCE LAST UPDATE https://phab.mercurial-scm.org/D378?vs=859&id=1038 REVISION DETAIL https://phab.mercurial-scm.org/D378 AFFECTED FILES contrib/simplemerge CHANGE DETAILS To: phillco, #hg-reviewers Cc: mercurial-devel diff --git a/contrib/simplemerge b/contrib/simplemerge --- a/contrib/simplemerge +++ b/contrib/simplemerge @@ -41,6 +41,26 @@ for first, second in out_opts: sys.stdout.write(' %-*s %s\n' % (opts_len, first, second)) +class filebackedctx(object): + """simplemerge requires context-like objects""" + def __init__(self, path): + self._path = path + + def decodeddata(self): + with open(self._path, "rb") as f: + return f.read() + + def flags(self): + return '' + + def path(self): + return self._path + + def write(self, data, flags): + assert not flags + with open(self._path, "w") as f: + f.write(data) + try: for fp in (sys.stdin, sys.stdout, sys.stderr): util.setbinary(fp) @@ -55,7 +75,16 @@ sys.exit(0) if len(args) != 3: raise ParseError(_('wrong number of arguments')) - sys.exit(simplemerge.simplemerge(ui.ui.load(), *args, **opts)) + local, base, other = args + sys.exit(simplemerge.simplemerge(ui.ui.load(), + local, + base, + other, + filebackedctx(local), + filebackedctx(base), + filebackedctx(other), + filtereddata=True, + **opts)) except ParseError as e: sys.stdout.write("%s: %s\n" % (sys.argv[0], e)) showhelp()