D7048: phabricator: add makebinary and addoldbinary functions
Kwan (Ian Moody)
phabricator at mercurial-scm.org
Thu Oct 10 21:52:41 UTC 2019
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
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()
To: Kwan, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list