phabricator: add the maketext function
This add the diff data for a text file to a phabchange.
Differential Revision: https://phab.mercurial-scm.org/D7045
--- a/hgext/phabricator.py Sun Oct 06 14:53:03 2019 +0100
+++ b/hgext/phabricator.py Sun Oct 06 14:54:46 2019 +0100
@@ -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()