Skip to content
Snippets Groups Projects

draft: preparation series for delta improvement

Closed Pierre-Yves David requested to merge topic/default/better-delta.pre into branch/default
+ 16
16
@@ -38,7 +38,7 @@
_CHANGEGROUPV1_DELTA_HEADER = struct.Struct(b"20s20s20s20s")
_CHANGEGROUPV2_DELTA_HEADER = struct.Struct(b"20s20s20s20s20s")
_CHANGEGROUPV3_DELTA_HEADER = struct.Struct(b">20s20s20s20s20sH")
_CHANGEGROUPV4_DELTA_HEADER = struct.Struct(b">B20s20s20s20s20sH")
_CHANGEGROUPV5_DELTA_HEADER = struct.Struct(b">B20s20s20s20s20sH")
LFS_REQUIREMENT = b'lfs'
@@ -485,7 +485,7 @@
requirements.REVLOGV2_REQUIREMENT in repo.requirements
or requirements.CHANGELOGV2_REQUIREMENT in repo.requirements
)
and self.version == b'04'
and self.version == b'05'
and srctype == b'pull'
)
if adding_sidedata:
@@ -854,6 +854,6 @@
raise error.Abort(_(b"received dir revlog group is empty"))
class cg4unpacker(cg3unpacker):
"""Unpacker for cg4 streams.
class cg5unpacker(cg3unpacker):
"""Unpacker for cg5 streams.
@@ -859,4 +859,4 @@
cg4 streams add support for exchanging sidedata.
cg5 streams add support for exchanging sidedata.
"""
@@ -861,4 +861,4 @@
"""
deltaheader = _CHANGEGROUPV4_DELTA_HEADER
deltaheader = _CHANGEGROUPV5_DELTA_HEADER
deltaheadersize = deltaheader.size
@@ -864,8 +864,8 @@
deltaheadersize = deltaheader.size
version = b'04'
version = b'05'
def _deltaheader(self, headertuple, prevnode):
protocol_flags, node, p1, p2, deltabase, cs, flags = headertuple
return node, p1, p2, deltabase, cs, flags, protocol_flags
def deltachunk(self, prevnode):
@@ -866,10 +866,10 @@
def _deltaheader(self, headertuple, prevnode):
protocol_flags, node, p1, p2, deltabase, cs, flags = headertuple
return node, p1, p2, deltabase, cs, flags, protocol_flags
def deltachunk(self, prevnode):
res = super(cg4unpacker, self).deltachunk(prevnode)
res = super(cg5unpacker, self).deltachunk(prevnode)
if not res:
return res
@@ -1503,7 +1503,7 @@
size = 0
sidedata_helpers = None
if self.version == b'04':
if self.version == b'05':
remote_sidedata = self._remote_sidedata
if source == b'strip':
# We're our own remote when stripping, get the no-op helpers
@@ -1588,7 +1588,7 @@
for tree, deltas in it:
if tree:
assert self.version in (b'03', b'04')
assert self.version in (b'03', b'05')
chunk = _fileheader(tree)
size += len(chunk)
yield chunk
@@ -2125,7 +2125,7 @@
)
def _makecg4packer(
def _makecg5packer(
repo,
oldmatcher,
matcher,
@@ -2139,7 +2139,7 @@
# Sidedata is in a separate chunk from the delta to differentiate
# "raw delta" and sidedata.
def builddeltaheader(d):
return _CHANGEGROUPV4_DELTA_HEADER.pack(
return _CHANGEGROUPV5_DELTA_HEADER.pack(
d.protocol_flags,
d.node,
d.p1node,
@@ -2153,7 +2153,7 @@
repo,
oldmatcher,
matcher,
b'04',
b'05',
builddeltaheader=builddeltaheader,
manifestsend=closechunk(),
bundlecaps=bundlecaps,
@@ -2171,8 +2171,8 @@
b'02': (_makecg2packer, cg2unpacker),
# cg3 adds support for exchanging revlog flags and treemanifests
b'03': (_makecg3packer, cg3unpacker),
# ch4 adds support for exchanging sidedata
b'04': (_makecg4packer, cg4unpacker),
# ch5 adds support for exchanging sidedata
b'05': (_makecg5packer, cg5unpacker),
}
@@ -2200,7 +2200,7 @@
or requirements.CHANGELOGV2_REQUIREMENT in repo.requirements
)
if not want_v4:
versions.discard(b'04')
versions.discard(b'05')
return versions
Loading