##// END OF EJS Templates
wireprotov2: define and implement "manifestdata" command...
wireprotov2: define and implement "manifestdata" command The added command can be used for obtaining manifest data. Given a manifest path and set of manifest nodes, data about manifests can be retrieved. Unlike changeset data, we wish to emit deltas to describe manifest revisions. So the command uses the relatively new API for building delta requests and emitting them. The code calls into deltaparent(), which I'm not very keen of. There's still work to be done in delta generation land so implementation details of storage (e.g. exactly one delta is stored/available) don't creep into higher levels. But we can worry about this later (there is already a TODO on imanifestorage tracking this). On the subject of parent deltas, the server assumes parent revisions exist on the receiving end. This is obviously wrong for shallow clone. I've added TODOs to add a mechanism to the command to allow clients to specify desired behavior. This shouldn't be too difficult to implement. Another big change is that the client must explicitly request manifest nodes to retrieve. This is a major departure from "getbundle," where the server derives relevant manifests as it iterates changesets and sends them automatically. As implemented, the client must transmit each requested node to the server. At 20 bytes per node, we're looking at 2 MB per 100,000 nodes. Plus wire encoding overhead. This isn't ideal for clients with limited upload bandwidth. I plan to address this in the future by allowing alternate mechanisms for defining the revisions to retrieve. One idea is to define a range of changeset revisions whose manifest revisions to retrieve (similar to how "changesetdata" works). We almost certainly want an API to look up an individual manifest by node. And that's where I've chosen to start with the implementation. Again, a theme of this early exchangev2 work is I want to start by building primitives for accessing raw repository data first and see how far we can get with those before we need more complexity. Differential Revision: https://phab.mercurial-scm.org/D4488

File last commit:

r37920:326b174c stable
r39673:c7a7c7e8 default
Show More
test-debugbundle.t
85 lines | 4.0 KiB | text/troff | Tads3Lexer
/ tests / test-debugbundle.t
Peter Arrenbrecht
commands: add debugbundle command...
r13724
Create a test repository:
$ hg init repo
$ cd repo
$ touch a ; hg add a ; hg ci -ma
$ touch b ; hg add b ; hg ci -mb
$ touch c ; hg add c ; hg ci -mc
Pierre-Yves David
test: enforce v1 in 'test-debugbundle.t'...
r26864 $ hg bundle --base 0 --rev tip bundle.hg -v --type v1
Peter Arrenbrecht
commands: add debugbundle command...
r13724 2 changesets found
Mads Kiilerich
bundle: when verbose, show what takes up the space in the generated bundle...
r23748 uncompressed size of bundle content:
332 (changelog)
282 (manifests)
Mike Hommey
mdiff: don't emit a diff header for empty trivial deltas...
r27711 93 b
93 c
Mike Hommey
debugbundle: add tests for debugbundle output with bundle2
r29062 $ hg bundle --base 0 --rev tip bundle2.hg -v --type none-v2
2 changesets found
uncompressed size of bundle content:
Pierre-Yves David
changegroup: skip delta when the underlying revlog do not use them...
r30211 344 (changelog)
Mike Hommey
debugbundle: add tests for debugbundle output with bundle2
r29062 322 (manifests)
113 b
113 c
Peter Arrenbrecht
commands: add debugbundle command...
r13724
Terse output:
$ hg debugbundle bundle.hg
0e067c57feba1a5694ca4844f05588bb1bf82342
991a3460af53952d10ec8a295d3d2cc2e5fa9690
Mike Hommey
debugbundle: add tests for debugbundle output with bundle2
r29062 Terse output:
$ hg debugbundle bundle2.hg
Stream params: {}
Boris Feld
debugbundle: also display if a part is mandatory or advisory...
r37919 changegroup -- {nbchanges: 2, version: 02} (mandatory: True)
Mike Hommey
debugbundle: add tests for debugbundle output with bundle2
r29062 0e067c57feba1a5694ca4844f05588bb1bf82342
991a3460af53952d10ec8a295d3d2cc2e5fa9690
Boris Feld
bundle2: mark the bundle2 part as advisory (issue5872)...
r37920 cache:rev-branch-cache -- {} (mandatory: False)
Mike Hommey
debugbundle: add tests for debugbundle output with bundle2
r29062
Boris Feld
debugbundle: do not display detailed part data in --quiet mode...
r36969 Quiet output
$ hg debugbundle --quiet bundle2.hg
Stream params: {}
Boris Feld
debugbundle: also display if a part is mandatory or advisory...
r37919 changegroup -- {nbchanges: 2, version: 02} (mandatory: True)
Boris Feld
bundle2: mark the bundle2 part as advisory (issue5872)...
r37920 cache:rev-branch-cache -- {} (mandatory: False)
Boris Feld
debugbundle: do not display detailed part data in --quiet mode...
r36969
Peter Arrenbrecht
commands: add debugbundle command...
r13724 Verbose output:
$ hg debugbundle --all bundle.hg
Benoit Boissinot
bundler: make parsechunk return the base revision of the delta
r14141 format: id, p1, p2, cset, delta base, len(delta)
Peter Arrenbrecht
commands: add debugbundle command...
r13724
changelog
Benoit Boissinot
bundler: make parsechunk return the base revision of the delta
r14141 0e067c57feba1a5694ca4844f05588bb1bf82342 3903775176ed42b1458a6281db4a0ccf4d9f287a 0000000000000000000000000000000000000000 0e067c57feba1a5694ca4844f05588bb1bf82342 3903775176ed42b1458a6281db4a0ccf4d9f287a 80
991a3460af53952d10ec8a295d3d2cc2e5fa9690 0e067c57feba1a5694ca4844f05588bb1bf82342 0000000000000000000000000000000000000000 991a3460af53952d10ec8a295d3d2cc2e5fa9690 0e067c57feba1a5694ca4844f05588bb1bf82342 80
Peter Arrenbrecht
commands: add debugbundle command...
r13724
manifest
Benoit Boissinot
bundler: make parsechunk return the base revision of the delta
r14141 686dbf0aeca417636fa26a9121c681eabbb15a20 8515d4bfda768e04af4c13a69a72e28c7effbea7 0000000000000000000000000000000000000000 0e067c57feba1a5694ca4844f05588bb1bf82342 8515d4bfda768e04af4c13a69a72e28c7effbea7 55
ae25a31b30b3490a981e7b96a3238cc69583fda1 686dbf0aeca417636fa26a9121c681eabbb15a20 0000000000000000000000000000000000000000 991a3460af53952d10ec8a295d3d2cc2e5fa9690 686dbf0aeca417636fa26a9121c681eabbb15a20 55
Peter Arrenbrecht
commands: add debugbundle command...
r13724
b
Mike Hommey
mdiff: don't emit a diff header for empty trivial deltas...
r27711 b80de5d138758541c5f05265ad144ab9fa86d1db 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0e067c57feba1a5694ca4844f05588bb1bf82342 0000000000000000000000000000000000000000 0
Peter Arrenbrecht
commands: add debugbundle command...
r13724
c
Mike Hommey
mdiff: don't emit a diff header for empty trivial deltas...
r27711 b80de5d138758541c5f05265ad144ab9fa86d1db 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 991a3460af53952d10ec8a295d3d2cc2e5fa9690 0000000000000000000000000000000000000000 0
Peter Arrenbrecht
commands: add debugbundle command...
r13724
Mike Hommey
debugbundle: add tests for debugbundle output with bundle2
r29062 $ hg debugbundle --all bundle2.hg
Stream params: {}
Boris Feld
debugbundle: also display if a part is mandatory or advisory...
r37919 changegroup -- {nbchanges: 2, version: 02} (mandatory: True)
Mike Hommey
debugbundle: add tests for debugbundle output with bundle2
r29062 format: id, p1, p2, cset, delta base, len(delta)
changelog
Pierre-Yves David
changegroup: skip delta when the underlying revlog do not use them...
r30211 0e067c57feba1a5694ca4844f05588bb1bf82342 3903775176ed42b1458a6281db4a0ccf4d9f287a 0000000000000000000000000000000000000000 0e067c57feba1a5694ca4844f05588bb1bf82342 0000000000000000000000000000000000000000 66
991a3460af53952d10ec8a295d3d2cc2e5fa9690 0e067c57feba1a5694ca4844f05588bb1bf82342 0000000000000000000000000000000000000000 991a3460af53952d10ec8a295d3d2cc2e5fa9690 0000000000000000000000000000000000000000 66
Mike Hommey
debugbundle: add tests for debugbundle output with bundle2
r29062
manifest
686dbf0aeca417636fa26a9121c681eabbb15a20 8515d4bfda768e04af4c13a69a72e28c7effbea7 0000000000000000000000000000000000000000 0e067c57feba1a5694ca4844f05588bb1bf82342 8515d4bfda768e04af4c13a69a72e28c7effbea7 55
ae25a31b30b3490a981e7b96a3238cc69583fda1 686dbf0aeca417636fa26a9121c681eabbb15a20 0000000000000000000000000000000000000000 991a3460af53952d10ec8a295d3d2cc2e5fa9690 686dbf0aeca417636fa26a9121c681eabbb15a20 55
b
b80de5d138758541c5f05265ad144ab9fa86d1db 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0e067c57feba1a5694ca4844f05588bb1bf82342 0000000000000000000000000000000000000000 0
c
b80de5d138758541c5f05265ad144ab9fa86d1db 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 991a3460af53952d10ec8a295d3d2cc2e5fa9690 0000000000000000000000000000000000000000 0
Boris Feld
bundle2: mark the bundle2 part as advisory (issue5872)...
r37920 cache:rev-branch-cache -- {} (mandatory: False)
Mike Hommey
debugbundle: add tests for debugbundle output with bundle2
r29062
Mads Kiilerich
tests: add missing trailing 'cd ..'...
r16913 $ cd ..