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()