From patchwork Thu Oct 10 21:52:41 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: D7048: phabricator: add makebinary and addoldbinary functions From: phabricator X-Patchwork-Id: 42204 Message-Id: To: Phabricator Cc: mercurial-devel@mercurial-scm.org Date: Thu, 10 Oct 2019 21:52:41 +0000 Kwan created this revision. Herald added a subscriber: mercurial-devel. Herald added a reviewer: hg-reviewers. REVISION SUMMARY These populate the phabchange with the data for a binary file, much as maketext does for text files. REPOSITORY rHG Mercurial BRANCH default REVISION DETAIL https://phab.mercurial-scm.org/D7048 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 @@ -46,6 +46,7 @@ import hashlib import itertools import json +import mimetypes import operator import re @@ -646,6 +647,43 @@ return fphid +def addoldbinary(pchange, fctx, originalfname): + """add the metadata for the previous version of a binary file to the + phabchange for the new version + """ + oldfctx = fctx.p1()[originalfname] + if fctx.cmp(oldfctx): + # Files differ, add the old one + pchange.metadata[b'old:file:size'] = oldfctx.size() + mimeguess, _enc = mimetypes.guess_type( + encoding.unifromlocal(oldfctx.path()) + ) + if mimeguess: + pchange.metadata[b'old:file:mime-type'] = pycompat.bytestr( + mimeguess + ) + fphid = uploadfile(oldfctx) + pchange.metadata[b'old:binary-phid'] = fphid + else: + # If it's left as IMAGE/BINARY web UI might try to display it + pchange.fileType = DiffFileType.TEXT + pchange.copynewmetadatatoold() + + +def makebinary(pchange, fctx): + """populate the phabchange for a binary file""" + pchange.fileType = DiffFileType.BINARY + fphid = uploadfile(fctx) + pchange.metadata[b'new:binary-phid'] = fphid + pchange.metadata[b'new:file:size'] = fctx.size() + mimeguess, _enc = mimetypes.guess_type(encoding.unifromlocal(fctx.path())) + if mimeguess: + mimeguess = pycompat.bytestr(mimeguess) + pchange.metadata[b'new:file:mime-type'] = mimeguess + if mimeguess.startswith(b'image/'): + pchange.fileType = DiffFileType.IMAGE + + def creatediff(ctx): """create a Differential Diff""" repo = ctx.repo()