Mercurial > hg
annotate tests/test-debugbundle.t @ 42619:20d0e59be79b
tests: show the files fields of changelogs for many merges
I don't think there's coverage for many of the subtle cases, and I
found it hard to understand what the code is doing by reading it. The
test takes 40s to run on a laptop, or 9s with --chg.
I have yet to find a description of what the files field is supposed
to be for merges. I thought it could be one of:
1. the files added/modified/removed relative to p1 (wouldn't seem
useful, but `hg diff -c -r mergerev` has this behavior)
2. the files with filelog nodes not in either parent (i.e., what is
needed to create a bundle out of a commit)
3. the files added/removed/modified files by merge itself [1]
It's clearly not 1, because file contents merges are symmetric. It's
clearly not 2 because removed files and exec bit changes are
listed. It's also not 3 but I think it's intended to be 3 and the
differences are bugs.
Assuming 3, the test shows that, for merges, the list of files both
overapproximates and underapproximates. All the cases involve file
changes not in the filelog but in the manifest (existence of file
at revision, exec bit and file vs symlink).
I didn't look at all underapproximations, but they looked minor. The
two overapproximations are problematic though because they both cause
potentially long lists of files when merging cleanly.
[1] even what it means for the merge commit itself to change a file is
not completely trivial. A file in the merge being the same as in one
of the parent is too lax as it would consider that merges change
nothing when they revert all the changes done on one side. The
criteria used in the test and in the next commit for "merge didn't
touch a file" is:
- the parents and the merge all have the same file
- or, one parent didn't touch the file and the other parent contains
the same file as the merge
Differential Revision: https://phab.mercurial-scm.org/D6612
author | Valentin Gatien-Baron <valentin.gatienbaron@gmail.com> |
---|---|
date | Tue, 02 Jul 2019 12:55:51 -0400 |
parents | 326b174c6a47 |
children |
rev | line source |
---|---|
13724
fe57046e9448
commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
diff
changeset
|
1 |
fe57046e9448
commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
diff
changeset
|
2 Create a test repository: |
fe57046e9448
commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
diff
changeset
|
3 |
fe57046e9448
commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
diff
changeset
|
4 $ hg init repo |
fe57046e9448
commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
diff
changeset
|
5 $ cd repo |
fe57046e9448
commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
diff
changeset
|
6 $ touch a ; hg add a ; hg ci -ma |
fe57046e9448
commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
diff
changeset
|
7 $ touch b ; hg add b ; hg ci -mb |
fe57046e9448
commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
diff
changeset
|
8 $ touch c ; hg add c ; hg ci -mc |
26864
fb1217cea400
test: enforce v1 in 'test-debugbundle.t'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
23748
diff
changeset
|
9 $ hg bundle --base 0 --rev tip bundle.hg -v --type v1 |
13724
fe57046e9448
commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
diff
changeset
|
10 2 changesets found |
23748
4ab66de46a96
bundle: when verbose, show what takes up the space in the generated bundle
Mads Kiilerich <madski@unity3d.com>
parents:
16913
diff
changeset
|
11 uncompressed size of bundle content: |
4ab66de46a96
bundle: when verbose, show what takes up the space in the generated bundle
Mads Kiilerich <madski@unity3d.com>
parents:
16913
diff
changeset
|
12 332 (changelog) |
4ab66de46a96
bundle: when verbose, show what takes up the space in the generated bundle
Mads Kiilerich <madski@unity3d.com>
parents:
16913
diff
changeset
|
13 282 (manifests) |
27711
7a678a12a5cf
mdiff: don't emit a diff header for empty trivial deltas
Mike Hommey <mh@glandium.org>
parents:
26864
diff
changeset
|
14 93 b |
7a678a12a5cf
mdiff: don't emit a diff header for empty trivial deltas
Mike Hommey <mh@glandium.org>
parents:
26864
diff
changeset
|
15 93 c |
29062
906a1c8a75fd
debugbundle: add tests for debugbundle output with bundle2
Mike Hommey <mh@glandium.org>
parents:
27711
diff
changeset
|
16 $ hg bundle --base 0 --rev tip bundle2.hg -v --type none-v2 |
906a1c8a75fd
debugbundle: add tests for debugbundle output with bundle2
Mike Hommey <mh@glandium.org>
parents:
27711
diff
changeset
|
17 2 changesets found |
906a1c8a75fd
debugbundle: add tests for debugbundle output with bundle2
Mike Hommey <mh@glandium.org>
parents:
27711
diff
changeset
|
18 uncompressed size of bundle content: |
30211
6b0741d6d234
changegroup: skip delta when the underlying revlog do not use them
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
29593
diff
changeset
|
19 344 (changelog) |
29062
906a1c8a75fd
debugbundle: add tests for debugbundle output with bundle2
Mike Hommey <mh@glandium.org>
parents:
27711
diff
changeset
|
20 322 (manifests) |
906a1c8a75fd
debugbundle: add tests for debugbundle output with bundle2
Mike Hommey <mh@glandium.org>
parents:
27711
diff
changeset
|
21 113 b |
906a1c8a75fd
debugbundle: add tests for debugbundle output with bundle2
Mike Hommey <mh@glandium.org>
parents:
27711
diff
changeset
|
22 113 c |
13724
fe57046e9448
commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
diff
changeset
|
23 |
fe57046e9448
commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
diff
changeset
|
24 Terse output: |
fe57046e9448
commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
diff
changeset
|
25 |
fe57046e9448
commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
diff
changeset
|
26 $ hg debugbundle bundle.hg |
fe57046e9448
commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
diff
changeset
|
27 0e067c57feba1a5694ca4844f05588bb1bf82342 |
fe57046e9448
commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
diff
changeset
|
28 991a3460af53952d10ec8a295d3d2cc2e5fa9690 |
fe57046e9448
commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
diff
changeset
|
29 |
29062
906a1c8a75fd
debugbundle: add tests for debugbundle output with bundle2
Mike Hommey <mh@glandium.org>
parents:
27711
diff
changeset
|
30 Terse output: |
906a1c8a75fd
debugbundle: add tests for debugbundle output with bundle2
Mike Hommey <mh@glandium.org>
parents:
27711
diff
changeset
|
31 |
906a1c8a75fd
debugbundle: add tests for debugbundle output with bundle2
Mike Hommey <mh@glandium.org>
parents:
27711
diff
changeset
|
32 $ hg debugbundle bundle2.hg |
906a1c8a75fd
debugbundle: add tests for debugbundle output with bundle2
Mike Hommey <mh@glandium.org>
parents:
27711
diff
changeset
|
33 Stream params: {} |
37841
d618558e4e8b
debugbundle: also display if a part is mandatory or advisory
Boris Feld <boris.feld@octobus.net>
parents:
36965
diff
changeset
|
34 changegroup -- {nbchanges: 2, version: 02} (mandatory: True) |
29062
906a1c8a75fd
debugbundle: add tests for debugbundle output with bundle2
Mike Hommey <mh@glandium.org>
parents:
27711
diff
changeset
|
35 0e067c57feba1a5694ca4844f05588bb1bf82342 |
906a1c8a75fd
debugbundle: add tests for debugbundle output with bundle2
Mike Hommey <mh@glandium.org>
parents:
27711
diff
changeset
|
36 991a3460af53952d10ec8a295d3d2cc2e5fa9690 |
37842
326b174c6a47
bundle2: mark the bundle2 part as advisory (issue5872)
Boris Feld <boris.feld@octobus.net>
parents:
37841
diff
changeset
|
37 cache:rev-branch-cache -- {} (mandatory: False) |
29062
906a1c8a75fd
debugbundle: add tests for debugbundle output with bundle2
Mike Hommey <mh@glandium.org>
parents:
27711
diff
changeset
|
38 |
36951
c92d1d3c58ee
debugbundle: do not display detailed part data in --quiet mode
Boris Feld <boris.feld@octobus.net>
parents:
34025
diff
changeset
|
39 Quiet output |
c92d1d3c58ee
debugbundle: do not display detailed part data in --quiet mode
Boris Feld <boris.feld@octobus.net>
parents:
34025
diff
changeset
|
40 |
c92d1d3c58ee
debugbundle: do not display detailed part data in --quiet mode
Boris Feld <boris.feld@octobus.net>
parents:
34025
diff
changeset
|
41 $ hg debugbundle --quiet bundle2.hg |
c92d1d3c58ee
debugbundle: do not display detailed part data in --quiet mode
Boris Feld <boris.feld@octobus.net>
parents:
34025
diff
changeset
|
42 Stream params: {} |
37841
d618558e4e8b
debugbundle: also display if a part is mandatory or advisory
Boris Feld <boris.feld@octobus.net>
parents:
36965
diff
changeset
|
43 changegroup -- {nbchanges: 2, version: 02} (mandatory: True) |
37842
326b174c6a47
bundle2: mark the bundle2 part as advisory (issue5872)
Boris Feld <boris.feld@octobus.net>
parents:
37841
diff
changeset
|
44 cache:rev-branch-cache -- {} (mandatory: False) |
36951
c92d1d3c58ee
debugbundle: do not display detailed part data in --quiet mode
Boris Feld <boris.feld@octobus.net>
parents:
34025
diff
changeset
|
45 |
13724
fe57046e9448
commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
diff
changeset
|
46 Verbose output: |
fe57046e9448
commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
diff
changeset
|
47 |
fe57046e9448
commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
diff
changeset
|
48 $ hg debugbundle --all bundle.hg |
14141
bd1cbfe5db5c
bundler: make parsechunk return the base revision of the delta
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
13724
diff
changeset
|
49 format: id, p1, p2, cset, delta base, len(delta) |
13724
fe57046e9448
commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
diff
changeset
|
50 |
fe57046e9448
commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
diff
changeset
|
51 changelog |
14141
bd1cbfe5db5c
bundler: make parsechunk return the base revision of the delta
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
13724
diff
changeset
|
52 0e067c57feba1a5694ca4844f05588bb1bf82342 3903775176ed42b1458a6281db4a0ccf4d9f287a 0000000000000000000000000000000000000000 0e067c57feba1a5694ca4844f05588bb1bf82342 3903775176ed42b1458a6281db4a0ccf4d9f287a 80 |
bd1cbfe5db5c
bundler: make parsechunk return the base revision of the delta
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
13724
diff
changeset
|
53 991a3460af53952d10ec8a295d3d2cc2e5fa9690 0e067c57feba1a5694ca4844f05588bb1bf82342 0000000000000000000000000000000000000000 991a3460af53952d10ec8a295d3d2cc2e5fa9690 0e067c57feba1a5694ca4844f05588bb1bf82342 80 |
13724
fe57046e9448
commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
diff
changeset
|
54 |
fe57046e9448
commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
diff
changeset
|
55 manifest |
14141
bd1cbfe5db5c
bundler: make parsechunk return the base revision of the delta
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
13724
diff
changeset
|
56 686dbf0aeca417636fa26a9121c681eabbb15a20 8515d4bfda768e04af4c13a69a72e28c7effbea7 0000000000000000000000000000000000000000 0e067c57feba1a5694ca4844f05588bb1bf82342 8515d4bfda768e04af4c13a69a72e28c7effbea7 55 |
bd1cbfe5db5c
bundler: make parsechunk return the base revision of the delta
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
13724
diff
changeset
|
57 ae25a31b30b3490a981e7b96a3238cc69583fda1 686dbf0aeca417636fa26a9121c681eabbb15a20 0000000000000000000000000000000000000000 991a3460af53952d10ec8a295d3d2cc2e5fa9690 686dbf0aeca417636fa26a9121c681eabbb15a20 55 |
13724
fe57046e9448
commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
diff
changeset
|
58 |
fe57046e9448
commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
diff
changeset
|
59 b |
27711
7a678a12a5cf
mdiff: don't emit a diff header for empty trivial deltas
Mike Hommey <mh@glandium.org>
parents:
26864
diff
changeset
|
60 b80de5d138758541c5f05265ad144ab9fa86d1db 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0e067c57feba1a5694ca4844f05588bb1bf82342 0000000000000000000000000000000000000000 0 |
13724
fe57046e9448
commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
diff
changeset
|
61 |
fe57046e9448
commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
diff
changeset
|
62 c |
27711
7a678a12a5cf
mdiff: don't emit a diff header for empty trivial deltas
Mike Hommey <mh@glandium.org>
parents:
26864
diff
changeset
|
63 b80de5d138758541c5f05265ad144ab9fa86d1db 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 991a3460af53952d10ec8a295d3d2cc2e5fa9690 0000000000000000000000000000000000000000 0 |
13724
fe57046e9448
commands: add debugbundle command
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
diff
changeset
|
64 |
29062
906a1c8a75fd
debugbundle: add tests for debugbundle output with bundle2
Mike Hommey <mh@glandium.org>
parents:
27711
diff
changeset
|
65 $ hg debugbundle --all bundle2.hg |
906a1c8a75fd
debugbundle: add tests for debugbundle output with bundle2
Mike Hommey <mh@glandium.org>
parents:
27711
diff
changeset
|
66 Stream params: {} |
37841
d618558e4e8b
debugbundle: also display if a part is mandatory or advisory
Boris Feld <boris.feld@octobus.net>
parents:
36965
diff
changeset
|
67 changegroup -- {nbchanges: 2, version: 02} (mandatory: True) |
29062
906a1c8a75fd
debugbundle: add tests for debugbundle output with bundle2
Mike Hommey <mh@glandium.org>
parents:
27711
diff
changeset
|
68 format: id, p1, p2, cset, delta base, len(delta) |
906a1c8a75fd
debugbundle: add tests for debugbundle output with bundle2
Mike Hommey <mh@glandium.org>
parents:
27711
diff
changeset
|
69 |
906a1c8a75fd
debugbundle: add tests for debugbundle output with bundle2
Mike Hommey <mh@glandium.org>
parents:
27711
diff
changeset
|
70 changelog |
30211
6b0741d6d234
changegroup: skip delta when the underlying revlog do not use them
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
29593
diff
changeset
|
71 0e067c57feba1a5694ca4844f05588bb1bf82342 3903775176ed42b1458a6281db4a0ccf4d9f287a 0000000000000000000000000000000000000000 0e067c57feba1a5694ca4844f05588bb1bf82342 0000000000000000000000000000000000000000 66 |
6b0741d6d234
changegroup: skip delta when the underlying revlog do not use them
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
29593
diff
changeset
|
72 991a3460af53952d10ec8a295d3d2cc2e5fa9690 0e067c57feba1a5694ca4844f05588bb1bf82342 0000000000000000000000000000000000000000 991a3460af53952d10ec8a295d3d2cc2e5fa9690 0000000000000000000000000000000000000000 66 |
29062
906a1c8a75fd
debugbundle: add tests for debugbundle output with bundle2
Mike Hommey <mh@glandium.org>
parents:
27711
diff
changeset
|
73 |
906a1c8a75fd
debugbundle: add tests for debugbundle output with bundle2
Mike Hommey <mh@glandium.org>
parents:
27711
diff
changeset
|
74 manifest |
906a1c8a75fd
debugbundle: add tests for debugbundle output with bundle2
Mike Hommey <mh@glandium.org>
parents:
27711
diff
changeset
|
75 686dbf0aeca417636fa26a9121c681eabbb15a20 8515d4bfda768e04af4c13a69a72e28c7effbea7 0000000000000000000000000000000000000000 0e067c57feba1a5694ca4844f05588bb1bf82342 8515d4bfda768e04af4c13a69a72e28c7effbea7 55 |
906a1c8a75fd
debugbundle: add tests for debugbundle output with bundle2
Mike Hommey <mh@glandium.org>
parents:
27711
diff
changeset
|
76 ae25a31b30b3490a981e7b96a3238cc69583fda1 686dbf0aeca417636fa26a9121c681eabbb15a20 0000000000000000000000000000000000000000 991a3460af53952d10ec8a295d3d2cc2e5fa9690 686dbf0aeca417636fa26a9121c681eabbb15a20 55 |
906a1c8a75fd
debugbundle: add tests for debugbundle output with bundle2
Mike Hommey <mh@glandium.org>
parents:
27711
diff
changeset
|
77 |
906a1c8a75fd
debugbundle: add tests for debugbundle output with bundle2
Mike Hommey <mh@glandium.org>
parents:
27711
diff
changeset
|
78 b |
906a1c8a75fd
debugbundle: add tests for debugbundle output with bundle2
Mike Hommey <mh@glandium.org>
parents:
27711
diff
changeset
|
79 b80de5d138758541c5f05265ad144ab9fa86d1db 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0e067c57feba1a5694ca4844f05588bb1bf82342 0000000000000000000000000000000000000000 0 |
906a1c8a75fd
debugbundle: add tests for debugbundle output with bundle2
Mike Hommey <mh@glandium.org>
parents:
27711
diff
changeset
|
80 |
906a1c8a75fd
debugbundle: add tests for debugbundle output with bundle2
Mike Hommey <mh@glandium.org>
parents:
27711
diff
changeset
|
81 c |
906a1c8a75fd
debugbundle: add tests for debugbundle output with bundle2
Mike Hommey <mh@glandium.org>
parents:
27711
diff
changeset
|
82 b80de5d138758541c5f05265ad144ab9fa86d1db 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 991a3460af53952d10ec8a295d3d2cc2e5fa9690 0000000000000000000000000000000000000000 0 |
37842
326b174c6a47
bundle2: mark the bundle2 part as advisory (issue5872)
Boris Feld <boris.feld@octobus.net>
parents:
37841
diff
changeset
|
83 cache:rev-branch-cache -- {} (mandatory: False) |
29062
906a1c8a75fd
debugbundle: add tests for debugbundle output with bundle2
Mike Hommey <mh@glandium.org>
parents:
27711
diff
changeset
|
84 |
16913
f2719b387380
tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents:
14141
diff
changeset
|
85 $ cd .. |