From patchwork Thu Oct 10 21:52:22 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: D7045: phabricator: add the maketext function From: phabricator X-Patchwork-Id: 42201 Message-Id: To: Phabricator Cc: mercurial-devel@mercurial-scm.org Date: Thu, 10 Oct 2019 21:52:22 +0000 Kwan created this revision. Herald added a subscriber: mercurial-devel. Herald added a reviewer: hg-reviewers. REVISION SUMMARY This add the diff data for a text file to a phabchange. REPOSITORY rHG Mercurial BRANCH default REVISION DETAIL https://phab.mercurial-scm.org/D7045 AFFECTED FILES hgext/phabricator.py CHANGE DETAILS To: Kwan, #hg-reviewers Cc: mercurial-devel diff --git a/hgext/phabricator.py b/hgext/phabricator.py --- a/hgext/phabricator.py +++ b/hgext/phabricator.py @@ -58,6 +58,7 @@ error, exthelper, httpconnection as httpconnectionmod, + match, mdiff, obsutil, parser, @@ -548,6 +549,36 @@ self.changes[change.currentPath] = change +def maketext(pchange, ctx, fname): + """populate the phabchange for a text file""" + repo = ctx.repo() + fmatcher = match.exact([fname]) + diffopts = mdiff.diffopts(git=True, context=32767) + _pfctx, _fctx, header, fhunks = next( + patch.diffhunks(repo, ctx.p1(), ctx, fmatcher, opts=diffopts) + ) + + for fhunk in fhunks: + (oldOffset, oldLength, newOffset, newLength), lines = fhunk + corpus = b''.join(lines[1:]) + shunk = list(header) + shunk.extend(lines) + _mf, _mt, addLines, delLines, _hb = patch.diffstatsum( + patch.diffstatdata(util.iterlines(shunk)) + ) + pchange.addhunk( + phabhunk( + oldOffset, + oldLength, + newOffset, + newLength, + corpus, + addLines, + delLines, + ) + ) + + def creatediff(ctx): """create a Differential Diff""" repo = ctx.repo()