##// END OF EJS Templates
changegroup: move ellipsisdata() from narrow...
Gregory Szorc -
r38919:ee1ea96c default
parent child Browse files
Show More
@@ -12,10 +12,8 b' from mercurial import ('
12 changegroup,
12 changegroup,
13 error,
13 error,
14 extensions,
14 extensions,
15 mdiff,
16 node,
15 node,
17 pycompat,
16 pycompat,
18 revlog,
19 util,
17 util,
20 )
18 )
21
19
@@ -54,21 +52,6 b' def setup():'
54 extensions.wrapfunction(
52 extensions.wrapfunction(
55 changegroup.cg1packer, 'generatefiles', generatefiles)
53 changegroup.cg1packer, 'generatefiles', generatefiles)
56
54
57 def ellipsisdata(packer, rev, revlog_, p1, p2, data, linknode):
58 n = revlog_.node(rev)
59 p1n, p2n = revlog_.node(p1), revlog_.node(p2)
60 flags = revlog_.flags(rev)
61 flags |= revlog.REVIDX_ELLIPSIS
62 meta = packer.builddeltaheader(
63 n, p1n, p2n, node.nullid, linknode, flags)
64 # TODO: try and actually send deltas for ellipsis data blocks
65 diffheader = mdiff.trivialdiffheader(len(data))
66 l = len(meta) + len(diffheader) + len(data)
67 return ''.join((changegroup.chunkheader(l),
68 meta,
69 diffheader,
70 data))
71
72 def close(orig, self):
55 def close(orig, self):
73 getattr(self, 'clrev_to_localrev', {}).clear()
56 getattr(self, 'clrev_to_localrev', {}).clear()
74 if getattr(self, 'next_clrev_to_localrev', {}):
57 if getattr(self, 'next_clrev_to_localrev', {}):
@@ -330,7 +313,7 b' def setup():'
330 else:
313 else:
331 p1, p2 = sorted(local(p) for p in linkparents)
314 p1, p2 = sorted(local(p) for p in linkparents)
332 n = revlog.node(rev)
315 n = revlog.node(rev)
333 yield ellipsisdata(
316 yield changegroup.ellipsisdata(
334 self, rev, revlog, p1, p2, revlog.revision(n), linknode)
317 self, rev, revlog, p1, p2, revlog.revision(n), linknode)
335 extensions.wrapfunction(changegroup.cg1packer, 'revchunk', revchunk)
318 extensions.wrapfunction(changegroup.cg1packer, 'revchunk', revchunk)
336
319
@@ -14,6 +14,7 b' import weakref'
14 from .i18n import _
14 from .i18n import _
15 from .node import (
15 from .node import (
16 hex,
16 hex,
17 nullid,
17 nullrev,
18 nullrev,
18 short,
19 short,
19 )
20 )
@@ -27,6 +28,7 b' from . import ('
27 phases,
28 phases,
28 pycompat,
29 pycompat,
29 repository,
30 repository,
31 revlog,
30 util,
32 util,
31 )
33 )
32
34
@@ -492,6 +494,21 b' class headerlessfixup(object):'
492 return d
494 return d
493 return readexactly(self._fh, n)
495 return readexactly(self._fh, n)
494
496
497 def ellipsisdata(packer, rev, revlog_, p1, p2, data, linknode):
498 n = revlog_.node(rev)
499 p1n, p2n = revlog_.node(p1), revlog_.node(p2)
500 flags = revlog_.flags(rev)
501 flags |= revlog.REVIDX_ELLIPSIS
502 meta = packer.builddeltaheader(
503 n, p1n, p2n, nullid, linknode, flags)
504 # TODO: try and actually send deltas for ellipsis data blocks
505 diffheader = mdiff.trivialdiffheader(len(data))
506 l = len(meta) + len(diffheader) + len(data)
507 return ''.join((chunkheader(l),
508 meta,
509 diffheader,
510 data))
511
495 class cg1packer(object):
512 class cg1packer(object):
496 deltaheader = _CHANGEGROUPV1_DELTA_HEADER
513 deltaheader = _CHANGEGROUPV1_DELTA_HEADER
497 version = '01'
514 version = '01'
General Comments 0
You need to be logged in to leave comments. Login now