##// END OF EJS Templates
wireprotov2: allow multiple fields to follow revision maps...
wireprotov2: allow multiple fields to follow revision maps The *data wire protocol commands emit a series of CBOR values. Because revision/delta data may be large, their data is emitted outside the map as a top-level bytestring value. Before this commit, we'd emit a single optional bytestring value after the revision descriptor map. This got the job done. But it was limiting in that we could only send a single field. And, it required the consumer to know that the presence of a key in the map implied the existence of a following bytestring value. This commit changes the encoding strategy so top-level bytestring values in the stream are explicitly denoted in a "fieldsfollowing" key. This key contains an array defining what fields that follow and the expected size of each field. By defining things this way, we can easily send N bytestring values without any ambiguity about their order. In addition, clients only need to know how to parse ``fieldsfollowing`` to know if extra values are present. Because this breaks backwards compatibility, we've bumped the version number of the wire protocol version 2 API endpoint. Differential Revision: https://phab.mercurial-scm.org/D4620
Gregory Szorc -
r39839:d059cb66 default
Show More
Name Size Modified Last Commit Author
/ mercurial
cext
cffi
default.d
help
hgweb
pure
revlogutils
templates
testing
thirdparty
utils
__init__.py Loading ...
ancestor.py Loading ...
archival.py Loading ...
bdiff.c Loading ...
bdiff.h Loading ...
bitmanipulation.h Loading ...
bookmarks.py Loading ...
branchmap.py Loading ...
bundle2.py Loading ...
bundlerepo.py Loading ...
cacheutil.py Loading ...
changegroup.py Loading ...
changelog.py Loading ...
chgserver.py Loading ...
cmdutil.py Loading ...
color.py Loading ...
commands.py Loading ...
commandserver.py Loading ...
compat.h Loading ...
config.py Loading ...
configitems.py Loading ...
context.py Loading ...
copies.py Loading ...
crecord.py Loading ...
dagop.py Loading ...
dagparser.py Loading ...
debugcommands.py Loading ...
destutil.py Loading ...
diffhelper.py Loading ...
diffutil.py Loading ...
dirstate.py Loading ...
dirstateguard.py Loading ...
discovery.py Loading ...
dispatch.py Loading ...
dummycert.pem Loading ...
encoding.py Loading ...
error.py Loading ...
exchange.py Loading ...
exchangev2.py Loading ...
exewrapper.c Loading ...
extensions.py Loading ...
fancyopts.py Loading ...
filelog.py Loading ...
filemerge.py Loading ...
fileset.py Loading ...
filesetlang.py Loading ...
formatter.py Loading ...
graphmod.py Loading ...
hbisect.py Loading ...
help.py Loading ...
hg.py Loading ...
hook.py Loading ...
httpconnection.py Loading ...
httppeer.py Loading ...
i18n.py Loading ...
keepalive.py Loading ...
linelog.py Loading ...
localrepo.py Loading ...
lock.py Loading ...
logcmdutil.py Loading ...
logexchange.py Loading ...
lsprof.py Loading ...
lsprofcalltree.py Loading ...
mail.py Loading ...
manifest.py Loading ...
match.py Loading ...
mdiff.py Loading ...
merge.py Loading ...
mergeutil.py Loading ...
minifileset.py Loading ...
minirst.py Loading ...
mpatch.c Loading ...
mpatch.h Loading ...
namespaces.py Loading ...
narrowspec.py Loading ...
node.py Loading ...
obsolete.py Loading ...
obsutil.py Loading ...
parser.py Loading ...
patch.py Loading ...
pathutil.py Loading ...
phases.py Loading ...
policy.py Loading ...
posix.py Loading ...
profiling.py Loading ...
progress.py Loading ...
pushkey.py Loading ...
pvec.py Loading ...
pycompat.py Loading ...
rcutil.py Loading ...
registrar.py Loading ...
repair.py Loading ...
repository.py Loading ...
repoview.py Loading ...
revlog.py Loading ...
revset.py Loading ...
revsetlang.py Loading ...
rewriteutil.py Loading ...
scmposix.py Loading ...
scmutil.py Loading ...
scmwindows.py Loading ...
server.py Loading ...
setdiscovery.py Loading ...
similar.py Loading ...
simplemerge.py Loading ...
smartset.py Loading ...
sparse.py Loading ...
sshpeer.py Loading ...
sslutil.py Loading ...
stack.py Loading ...
state.py Loading ...
statichttprepo.py Loading ...
statprof.py Loading ...
store.py Loading ...
streamclone.py Loading ...
subrepo.py Loading ...
subrepoutil.py Loading ...
tagmerge.py Loading ...
tags.py Loading ...
templatefilters.py Loading ...
templatefuncs.py Loading ...
templatekw.py Loading ...
templater.py Loading ...
templateutil.py Loading ...
transaction.py Loading ...
treediscovery.py Loading ...
txnutil.py Loading ...
ui.py Loading ...
unionrepo.py Loading ...
upgrade.py Loading ...
url.py Loading ...
urllibcompat.py Loading ...
util.py Loading ...
verify.py Loading ...
vfs.py Loading ...
win32.py Loading ...
windows.py Loading ...
wireprotoframing.py Loading ...
wireprotoserver.py Loading ...
wireprototypes.py Loading ...
wireprotov1peer.py Loading ...
wireprotov1server.py Loading ...
wireprotov2peer.py Loading ...
wireprotov2server.py Loading ...
worker.py Loading ...