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