annotate tests/test-push-checkheads-pruned-B3.t @ 51977:42a116f1cdc1

branchmap-v3: introduce a "stop_rev" argument to `headsrevs` The `headsrevs` method of the revlog already have a `revs` argument to compute the headrevs of a limited set of heads. However, it disable the use of the native compiled code to compute the heads, which slows down the branchmap v3 code a lot. The branchmap v3 usage is actually quite constrained as we will always only ignores a part at the top of the graph. So we could be significantly faster. We start by making small change to the python side to improve the situation and introduce the new API. More collaboration with the native code are coming later. This massively speedup operation and close most of the remaining gaps between branchmap-v3 and branchmap-v2. especially on repository with many revs like mozilla-try. A small overhead remains mostly because the `headrevs` logic currently has some inefficiently. We will look into them from there. ### benchmark.name = hg.command.unbundle # bin-env-vars.hg.py-re2-module = default # benchmark.variants.issue6528 = disabled # benchmark.variants.resource-usage = default # benchmark.variants.reuse-external-delta-parent = yes # benchmark.variants.revs = any-1-extra-rev # benchmark.variants.source = unbundle # benchmark.variants.validate = default # benchmark.variants.verbosity = quiet ## data-env-vars.name = netbeans-2018-08-01-zstd-sparse-revlog # bin-env-vars.hg.flavor = default branch-v2: 0.233711 ~~~~~ branch-v3 before: 0.368769 (+57.79%, +0.14) branch-v3 after: 0.239857 (+2.63%, +0.01) # bin-env-vars.hg.flavor = rust branch-v2: 0.235230 ~~~~~ branch-v3 before: 0.372460 (+58.34%, +0.14) branch-v3 after: 0.240972 (+2.44%, +0.01) ## data-env-vars.name = netbeans-2018-08-01-ds2-pnm # bin-env-vars.hg.flavor = rust branch-v2: 0.255586 ~~~~~ branch-v3 before: 0.318907 (+24.78%, +0.06) branch-v3 after: 0.268560 (+5.08%, +0.01) ## data-env-vars.name = mozilla-central-2024-03-22-zstd-sparse-revlog # bin-env-vars.hg.flavor = default branch-v2: 0.339010 ~~~~~ branch-v3 before: 0.349752 (+3.17%, +0.01) branch-v3 after: 0.349389 (+3.06%, +0.01) # bin-env-vars.hg.flavor = rust branch-v2: 0.346525 ~~~~~ branch-v3 before: 0.354300 (+2.24%, +0.01) branch-v3 after: 0.355661 (+2.64%, +0.01) ## data-env-vars.name = mozilla-central-2024-03-22-ds2-pnm # bin-env-vars.hg.flavor = rust branch-v2: 0.380202 ~~~~~ branch-v3 before: 0.396293 (+4.23%, +0.02) branch-v3 after: 0.408851 (+7.54%, +0.03) ## data-env-vars.name = mozilla-unified-2024-03-22-zstd-sparse-revlog # bin-env-vars.hg.flavor = default branch-v2: 0.412165 ~~~~~ branch-v3 before: 0.424769 (+3.06%, +0.01) branch-v3 after: 0.427782 (+3.79%, +0.02) # bin-env-vars.hg.flavor = rust branch-v2: 0.412397 ~~~~~ branch-v3 before: 0.421796 (+2.28%, +0.01) branch-v3 after: 0.422354 (+2.41%, +0.01) ## data-env-vars.name = mozilla-unified-2024-03-22-ds2-pnm # bin-env-vars.hg.flavor = rust branch-v2: 0.429501 ~~~~~ branch-v3 before: 0.443849 (+3.34%, +0.01) branch-v3 after: 0.443197 (+3.19%, +0.01) ## data-env-vars.name = mozilla-try-2024-03-26-zstd-sparse-revlog # bin-env-vars.hg.flavor = default branch-v2: 3.403171 ~~~~~ branch-v3 before: 6.234055 (+83.18%, +2.83) branch-v3 after: 3.819477 (+12.23%, +0.42) # bin-env-vars.hg.flavor = rust branch-v2: 3.454876 ~~~~~ branch-v3 before: 6.307813 (+82.58%, +2.85) branch-v3 after: 3.590284 (+3.92%, +0.14) ## data-env-vars.name = mozilla-try-2024-03-26-ds2-pnm # bin-env-vars.hg.flavor = rust branch-v2: 3.465435 ~~~~~ branch-v3 before: 5.176076 (+49.36%, +1.71) branch-v3 after: 3.633278 (+4.84%, +0.17)
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Tue, 03 Sep 2024 11:11:17 +0200
parents 5996640fc6fe
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
31982
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
1 ====================================
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
2 Testing head checking code: Case B-3
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
3 ====================================
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
4
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
5 Mercurial checks for the introduction of new heads on push. Evolution comes
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
6 into play to detect if existing branches on the server are being replaced by
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
7 some of the new one we push.
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
8
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
9 This case is part of a series of tests checking this behavior.
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
10
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
11 Category B: simple case involving pruned changesets
49168
5996640fc6fe tests: fix misspelling of supersede
Anton Shestakov <av6@dwimlabs.net>
parents: 42893
diff changeset
12 TestCase 3: multi-changeset branch, other is pruned, rest is superseded
31982
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
13
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
14 .. old-state:
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
15 ..
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
16 .. * 2 changeset branch
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
17 ..
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
18 .. new-state:
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
19 ..
49168
5996640fc6fe tests: fix misspelling of supersede
Anton Shestakov <av6@dwimlabs.net>
parents: 42893
diff changeset
20 .. * old head is superseded
31982
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
21 .. * old other is pruned
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
22 ..
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
23 .. expected-result:
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
24 ..
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
25 .. * push allowed
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
26 ..
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
27 .. graph-summary:
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
28 ..
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
29 .. B ø⇠◔ B'
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
30 .. | |
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
31 .. A ⊗ |
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
32 .. |/
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
33 .. ●
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
34
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
35 $ . $TESTDIR/testlib/push-checkheads-util.sh
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
36
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
37 Test setup
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
38 ----------
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
39
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
40 $ mkdir B3
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
41 $ cd B3
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
42 $ setuprepos
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
43 creating basic server and client repo
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
44 updating to branch default
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
45 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
46 $ cd server
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
47 $ mkcommit B0
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
48 $ cd ../client
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
49 $ hg pull
35393
4441705b7111 tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents: 34661
diff changeset
50 pulling from $TESTTMP/B3/server
31982
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
51 searching for changes
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
52 adding changesets
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
53 adding manifests
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
54 adding file changes
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
55 added 1 changesets with 1 changes to 1 files
39480
89630d0b3e23 phase: report number of non-public changeset alongside the new range
Boris Feld <boris.feld@octobus.net>
parents: 35709
diff changeset
56 new changesets d73caddc5533 (1 drafts)
31982
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
57 (run 'hg update' to get a working copy)
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
58 $ hg up 0
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
59 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
60 $ mkcommit B1
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
61 created new head
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
62 $ hg debugobsolete --record-parents `getid "desc(A0)"`
42893
34a46d48d24e debugobsolete: also issue the "new obsmarkers" messsage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 39480
diff changeset
63 1 new obsolescence markers
33542
b11e8c67fb0f debugobsolete: also report the number of obsoleted changesets
Boris Feld <boris.feld@octobus.net>
parents: 33252
diff changeset
64 obsoleted 1 changesets
35709
1a09dad8b85a evolution: report new unstable changesets
Martin von Zweigbergk <martinvonz@google.com>
parents: 35393
diff changeset
65 1 new orphan changesets
31982
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
66 $ hg debugobsolete `getid "desc(B0)" ` `getid "desc(B1)"`
42893
34a46d48d24e debugobsolete: also issue the "new obsmarkers" messsage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 39480
diff changeset
67 1 new obsolescence markers
33542
b11e8c67fb0f debugobsolete: also report the number of obsoleted changesets
Boris Feld <boris.feld@octobus.net>
parents: 33252
diff changeset
68 obsoleted 1 changesets
31982
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
69 $ hg log -G --hidden
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
70 @ 25c56d33e4c4 (draft): B1
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
71 |
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
72 | x d73caddc5533 (draft): B0
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
73 | |
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
74 | x 8aaa48160adc (draft): A0
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
75 |/
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
76 o 1e4be0697311 (public): root
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
77
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
78
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
79 Actual testing
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
80 --------------
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
81
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
82 $ hg push
35393
4441705b7111 tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents: 34661
diff changeset
83 pushing to $TESTTMP/B3/server
31982
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
84 searching for changes
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
85 adding changesets
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
86 adding manifests
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
87 adding file changes
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
88 added 1 changesets with 1 changes to 1 files (+1 heads)
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
89 2 new obsolescence markers
33252
53b3a1968aa6 obsolete: reports the number of local changeset obsoleted when unbundling
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 31982
diff changeset
90 obsoleted 2 changesets
31982
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
91
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
92 $ cd ../..
fe83cb0dcafa obsolescence: add test for the "branch replacement" logic during push, case B3
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
93