D7046: phabricator: add the uploadchunks function
Kwan (Ian Moody)
phabricator at mercurial-scm.org
Thu Oct 10 21:52:30 UTC 2019
Kwan created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
REPOSITORY
rHG Mercurial
BRANCH
default
REVISION DETAIL
https://phab.mercurial-scm.org/D7046
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
@@ -41,6 +41,7 @@
from __future__ import absolute_import
+import base64
import contextlib
import itertools
import json
@@ -579,6 +580,34 @@
)
+def uploadchunks(fctx, fphid):
+ """upload large binary files as separate chunks.
+ Phab requests chunking over 8MiB, and splits into 4MiB chunks
+ """
+ ui = fctx.repo().ui
+ chunks = callconduit(ui, b'file.querychunks', {b'filePHID': fphid})
+ progress = ui.makeprogress(
+ _(b'uploading file chunks'), unit=_(b'chunks'), total=len(chunks)
+ )
+ for chunk in chunks:
+ progress.increment()
+ if chunk[b'complete']:
+ continue
+ bstart = int(chunk[b'byteStart'])
+ bend = int(chunk[b'byteEnd'])
+ callconduit(
+ ui,
+ b'file.uploadchunk',
+ {
+ b'filePHID': fphid,
+ b'byteStart': bstart,
+ b'data': base64.b64encode(fctx.data()[bstart:bend]),
+ b'dataEncoding': b'base64',
+ },
+ )
+ progress.complete()
+
+
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