annotate tests/test-subrepo-relative-path.t @ 51681:522b4d729e89

mmap: populate the mapping by default Without pre-population, accessing all data through a mmap can result in many pagefault, reducing performance significantly. If the mmap is prepopulated, the performance can no longer get slower than a full read. (See benchmark number below) In some cases were very few data is read, prepopulating can be overkill and slower than populating on access (through page fault). So that behavior can be controlled when the caller can pre-determine the best behavior. (See benchmark number below) In addition, testing with populating in a secondary thread yield great result combining the best of each approach. This might be implemented in later changesets. In all cases, using mmap has a great effect on memory usage when many processes run in parallel on the same machine. ### Benchmarks # What did I run A couple of month back I ran a large benchmark campaign to assess the impact of various approach for using mmap with the revlog (and other files), it highlighted a few benchmarks that capture the impact of the changes well. So to validate this change I checked the following: - log command displaying various revisions (read the changelog index) - log command displaying the patch of listed revisions (read the changelog index, the manifest index and a few files indexes) - unbundling a few revisions (read and write changelog, manifest and few files indexes, and walk the graph to update some cache) - pushing a few revisions (read and write changelog, manifest and few files indexes, walk the graph to update some cache, performs various accesses locally and remotely during discovery) Benchmarks were run using the default module policy (c+py) and the rust one. No significant difference were found between the two implementation, so we will present result using the default policy (unless otherwise specified). I ran them on a few repositories : - mercurial: a "public changeset only" copy of mercurial from 2018-08-01 using zstd compression and sparse-revlog - pypy: a copy of pypy from 2018-08-01 using zstd compression and sparse-revlog - netbeans: a copy of netbeans from 2018-08-01 using zstd compression and sparse-revlog - mozilla-try: a copy of mozilla-try from 2019-02-18 using zstd compression and sparse-revlog - mozilla-try persistent-nodemap: Same as the above but with a persistent nodemap. Used for the log --patch benchmark only # Results For the smaller repositories (mercurial, pypy), the impact of mmap is almost imperceptible, other cost dominating the operation. The impact of prepopulating is undiscernible in the benchmark we ran. For larger repositories the benchmark support explanation given above: On netbeans, the log can be about 1% faster without repopulation (for a difference < 100ms) but unbundle becomes a bit slower, even when small. ### data-env-vars.name = netbeans-2018-08-01-zstd-sparse-revlog # benchmark.name = hg.command.unbundle # benchmark.variants.issue6528 = disabled # benchmark.variants.reuse-external-delta-parent = yes # benchmark.variants.revs = any-1-extra-rev # benchmark.variants.source = unbundle # benchmark.variants.verbosity = quiet with-populate: 0.240157 no-populate: 0.265087 (+10.38%, +0.02) # benchmark.variants.revs = any-100-extra-rev with-populate: 1.459518 no-populate: 1.481290 (+1.49%, +0.02) ## benchmark.name = hg.command.push # benchmark.variants.explicit-rev = none # benchmark.variants.issue6528 = disabled # benchmark.variants.protocol = ssh # benchmark.variants.reuse-external-delta-parent = yes # benchmark.variants.revs = any-1-extra-rev with-populate: 0.771919 no-populate: 0.792025 (+2.60%, +0.02) # benchmark.variants.revs = any-100-extra-rev with-populate: 1.459518 no-populate: 1.481290 (+1.49%, +0.02) For mozilla-try, the "slow down" from pre-populate for small `hg log` is more visible, but still small in absolute time. (using rust value for the persistent nodemap value to be relevant). ### data-env-vars.name = mozilla-try-2019-02-18-ds2-pnm # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rust # benchmark.variants.patch = yes # benchmark.variants.limit-rev = 1 with-populate: 0.237813 no-populate: 0.229452 (-3.52%, -0.01) # benchmark.variants.limit-rev = 10 # benchmark.variants.patch = yes with-populate: 1.213578 no-populate: 1.205189 ### data-env-vars.name = mozilla-try-2019-02-18-zstd-sparse-revlog # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = tip with-populate: 0.198607 no-populate: 0.195038 (-1.80%, -0.00) However pre-populating provide a significant boost on more complex operations like unbundle or push: ### data-env-vars.name = mozilla-try-2019-02-18-zstd-sparse-revlog # benchmark.name = hg.command.push # benchmark.variants.explicit-rev = none # benchmark.variants.issue6528 = disabled # benchmark.variants.protocol = ssh # benchmark.variants.reuse-external-delta-parent = yes # benchmark.variants.revs = any-1-extra-rev with-populate: 4.798632 no-populate: 4.953295 (+3.22%, +0.15) # benchmark.variants.revs = any-100-extra-rev with-populate: 4.903618 no-populate: 5.014963 (+2.27%, +0.11) ## benchmark.name = hg.command.unbundle # benchmark.variants.revs = any-1-extra-rev with-populate: 1.423411 no-populate: 1.585365 (+11.38%, +0.16) # benchmark.variants.revs = any-100-extra-rev with-populate: 1.537909 no-populate: 1.688489 (+9.79%, +0.15)
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Thu, 11 Apr 2024 00:02:07 +0200
parents 9c4204b7f3e4
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11915
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
1 Preparing the subrepository 'sub'
11109
a2bc2f2d77a9 subrepo: normalize path part of URLs so that pulling subrepos from webdir works
Edouard Gomez <ed.gomez@free.fr>
parents:
diff changeset
2
11915
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
3 $ hg init sub
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
4 $ echo sub > sub/sub
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
5 $ hg add -R sub
35393
4441705b7111 tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents: 34661
diff changeset
6 adding sub/sub
11915
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
7 $ hg commit -R sub -m "sub import"
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
8
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
9 Preparing the 'main' repo which depends on the subrepo 'sub'
11109
a2bc2f2d77a9 subrepo: normalize path part of URLs so that pulling subrepos from webdir works
Edouard Gomez <ed.gomez@free.fr>
parents:
diff changeset
10
11915
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
11 $ hg init main
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
12 $ echo main > main/main
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
13 $ echo "sub = ../sub" > main/.hgsub
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
14 $ hg clone sub main/sub
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
15 updating to branch default
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
16 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
17 $ hg add -R main
35393
4441705b7111 tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents: 34661
diff changeset
18 adding main/.hgsub
4441705b7111 tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents: 34661
diff changeset
19 adding main/main
11915
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
20 $ hg commit -R main -m "main import"
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
21
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
22 Cleaning both repositories, just as a clone -U
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
23
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
24 $ hg up -C -R sub null
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
25 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
26 $ hg up -C -R main null
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
27 0 files updated, 0 files merged, 3 files removed, 0 files unresolved
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
28 $ rm -rf main/sub
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
29
17015
73d20de5f30b tests: add missing no-outer-repo requirements
Mads Kiilerich <mads@kiilerich.com>
parents: 16351
diff changeset
30 hide outer repo
73d20de5f30b tests: add missing no-outer-repo requirements
Mads Kiilerich <mads@kiilerich.com>
parents: 16351
diff changeset
31 $ hg init
73d20de5f30b tests: add missing no-outer-repo requirements
Mads Kiilerich <mads@kiilerich.com>
parents: 16351
diff changeset
32
11915
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
33 Serving them both using hgweb
11109
a2bc2f2d77a9 subrepo: normalize path part of URLs so that pulling subrepos from webdir works
Edouard Gomez <ed.gomez@free.fr>
parents:
diff changeset
34
11915
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
35 $ printf '[paths]\n/main = main\nsub = sub\n' > webdir.conf
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
36 $ hg serve --webdir-conf webdir.conf -a localhost -p $HGPORT \
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
37 > -A /dev/null -E /dev/null --pid-file hg.pid -d
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
38 $ cat hg.pid >> $DAEMON_PIDS
11109
a2bc2f2d77a9 subrepo: normalize path part of URLs so that pulling subrepos from webdir works
Edouard Gomez <ed.gomez@free.fr>
parents:
diff changeset
39
11915
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
40 Clone main from hgweb
11109
a2bc2f2d77a9 subrepo: normalize path part of URLs so that pulling subrepos from webdir works
Edouard Gomez <ed.gomez@free.fr>
parents:
diff changeset
41
39547
41ac8ea1bdd7 subrepo: mask out passwords embedded in the messages displaying a URL
Matt Harbison <matt_harbison@yahoo.com>
parents: 38170
diff changeset
42 $ hg clone "http://user:pass@localhost:$HGPORT/main" cloned
11915
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
43 requesting all changes
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
44 adding changesets
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
45 adding manifests
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
46 adding file changes
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
47 added 1 changesets with 3 changes to 3 files
34661
eb586ed5d8ce transaction-summary: show the range of new revisions upon pull/unbundle (BC)
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 33335
diff changeset
48 new changesets fdfeeb3e979e
11915
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
49 updating to branch default
39547
41ac8ea1bdd7 subrepo: mask out passwords embedded in the messages displaying a URL
Matt Harbison <matt_harbison@yahoo.com>
parents: 38170
diff changeset
50 cloning subrepo sub from http://user@localhost:$HGPORT/sub
11915
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
51 requesting all changes
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
52 adding changesets
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
53 adding manifests
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
54 adding file changes
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
55 added 1 changesets with 1 changes to 1 files
34661
eb586ed5d8ce transaction-summary: show the range of new revisions upon pull/unbundle (BC)
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 33335
diff changeset
56 new changesets 863c1745b441
11915
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
57 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
11109
a2bc2f2d77a9 subrepo: normalize path part of URLs so that pulling subrepos from webdir works
Edouard Gomez <ed.gomez@free.fr>
parents:
diff changeset
58
38170
dfb888aae17a outgoing: pay attention to `default:pushurl` for bookmarks and subrepos
Matt Harbison <matt_harbison@yahoo.com>
parents: 37845
diff changeset
59 Ensure that subrepos pay attention to default:pushurl
dfb888aae17a outgoing: pay attention to `default:pushurl` for bookmarks and subrepos
Matt Harbison <matt_harbison@yahoo.com>
parents: 37845
diff changeset
60
dfb888aae17a outgoing: pay attention to `default:pushurl` for bookmarks and subrepos
Matt Harbison <matt_harbison@yahoo.com>
parents: 37845
diff changeset
61 $ cat > cloned/.hg/hgrc << EOF
dfb888aae17a outgoing: pay attention to `default:pushurl` for bookmarks and subrepos
Matt Harbison <matt_harbison@yahoo.com>
parents: 37845
diff changeset
62 > [paths]
39547
41ac8ea1bdd7 subrepo: mask out passwords embedded in the messages displaying a URL
Matt Harbison <matt_harbison@yahoo.com>
parents: 38170
diff changeset
63 > default:pushurl = http://user:pass@localhost:$HGPORT/main
38170
dfb888aae17a outgoing: pay attention to `default:pushurl` for bookmarks and subrepos
Matt Harbison <matt_harbison@yahoo.com>
parents: 37845
diff changeset
64 > EOF
dfb888aae17a outgoing: pay attention to `default:pushurl` for bookmarks and subrepos
Matt Harbison <matt_harbison@yahoo.com>
parents: 37845
diff changeset
65
dfb888aae17a outgoing: pay attention to `default:pushurl` for bookmarks and subrepos
Matt Harbison <matt_harbison@yahoo.com>
parents: 37845
diff changeset
66 $ hg -R cloned out -S --config paths.default=bogus://invalid
39547
41ac8ea1bdd7 subrepo: mask out passwords embedded in the messages displaying a URL
Matt Harbison <matt_harbison@yahoo.com>
parents: 38170
diff changeset
67 comparing with http://user:***@localhost:$HGPORT/main
38170
dfb888aae17a outgoing: pay attention to `default:pushurl` for bookmarks and subrepos
Matt Harbison <matt_harbison@yahoo.com>
parents: 37845
diff changeset
68 searching for changes
dfb888aae17a outgoing: pay attention to `default:pushurl` for bookmarks and subrepos
Matt Harbison <matt_harbison@yahoo.com>
parents: 37845
diff changeset
69 no changes found
39547
41ac8ea1bdd7 subrepo: mask out passwords embedded in the messages displaying a URL
Matt Harbison <matt_harbison@yahoo.com>
parents: 38170
diff changeset
70 comparing with http://user:***@localhost:$HGPORT/sub
38170
dfb888aae17a outgoing: pay attention to `default:pushurl` for bookmarks and subrepos
Matt Harbison <matt_harbison@yahoo.com>
parents: 37845
diff changeset
71 searching for changes
dfb888aae17a outgoing: pay attention to `default:pushurl` for bookmarks and subrepos
Matt Harbison <matt_harbison@yahoo.com>
parents: 37845
diff changeset
72 no changes found
dfb888aae17a outgoing: pay attention to `default:pushurl` for bookmarks and subrepos
Matt Harbison <matt_harbison@yahoo.com>
parents: 37845
diff changeset
73 [1]
dfb888aae17a outgoing: pay attention to `default:pushurl` for bookmarks and subrepos
Matt Harbison <matt_harbison@yahoo.com>
parents: 37845
diff changeset
74
39547
41ac8ea1bdd7 subrepo: mask out passwords embedded in the messages displaying a URL
Matt Harbison <matt_harbison@yahoo.com>
parents: 38170
diff changeset
75 TODO: Figure out why, if the password is left out of the default:pushurl URL,
41ac8ea1bdd7 subrepo: mask out passwords embedded in the messages displaying a URL
Matt Harbison <matt_harbison@yahoo.com>
parents: 38170
diff changeset
76 this says "no changes made to subrepo sub since last push". It looks like from
41ac8ea1bdd7 subrepo: mask out passwords embedded in the messages displaying a URL
Matt Harbison <matt_harbison@yahoo.com>
parents: 38170
diff changeset
77 the original clone command above, the password is getting stripped off, not
41ac8ea1bdd7 subrepo: mask out passwords embedded in the messages displaying a URL
Matt Harbison <matt_harbison@yahoo.com>
parents: 38170
diff changeset
78 just masked out, and that would make the hashed URL different.
41ac8ea1bdd7 subrepo: mask out passwords embedded in the messages displaying a URL
Matt Harbison <matt_harbison@yahoo.com>
parents: 38170
diff changeset
79
38170
dfb888aae17a outgoing: pay attention to `default:pushurl` for bookmarks and subrepos
Matt Harbison <matt_harbison@yahoo.com>
parents: 37845
diff changeset
80 $ hg -R cloned push --config paths.default=bogus://invalid
39547
41ac8ea1bdd7 subrepo: mask out passwords embedded in the messages displaying a URL
Matt Harbison <matt_harbison@yahoo.com>
parents: 38170
diff changeset
81 pushing to http://user:***@localhost:$HGPORT/main
41ac8ea1bdd7 subrepo: mask out passwords embedded in the messages displaying a URL
Matt Harbison <matt_harbison@yahoo.com>
parents: 38170
diff changeset
82 pushing subrepo sub to http://user:***@localhost:$HGPORT/sub
41ac8ea1bdd7 subrepo: mask out passwords embedded in the messages displaying a URL
Matt Harbison <matt_harbison@yahoo.com>
parents: 38170
diff changeset
83 searching for changes
41ac8ea1bdd7 subrepo: mask out passwords embedded in the messages displaying a URL
Matt Harbison <matt_harbison@yahoo.com>
parents: 38170
diff changeset
84 no changes found
38170
dfb888aae17a outgoing: pay attention to `default:pushurl` for bookmarks and subrepos
Matt Harbison <matt_harbison@yahoo.com>
parents: 37845
diff changeset
85 searching for changes
dfb888aae17a outgoing: pay attention to `default:pushurl` for bookmarks and subrepos
Matt Harbison <matt_harbison@yahoo.com>
parents: 37845
diff changeset
86 no changes found
dfb888aae17a outgoing: pay attention to `default:pushurl` for bookmarks and subrepos
Matt Harbison <matt_harbison@yahoo.com>
parents: 37845
diff changeset
87 abort: HTTP Error 403: ssl required
45839
ebee234d952a errors: set detailed exit code to 100 for some remote errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 39547
diff changeset
88 [100]
38170
dfb888aae17a outgoing: pay attention to `default:pushurl` for bookmarks and subrepos
Matt Harbison <matt_harbison@yahoo.com>
parents: 37845
diff changeset
89
11915
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
90 Checking cloned repo ids
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
91
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
92 $ hg id -R cloned
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
93 fdfeeb3e979e tip
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
94 $ hg id -R cloned/sub
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
95 863c1745b441 tip
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
96
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
97 subrepo debug for 'main' clone
11109
a2bc2f2d77a9 subrepo: normalize path part of URLs so that pulling subrepos from webdir works
Edouard Gomez <ed.gomez@free.fr>
parents:
diff changeset
98
11915
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
99 $ hg debugsub -R cloned
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
100 path sub
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
101 source ../sub
d521e72314f9 tests: unify test-subrepo-relative-path
Martin Geisler <mg@lazybytes.net>
parents: 11109
diff changeset
102 revision 863c1745b441bd97a8c4a096e87793073f4fb215
11109
a2bc2f2d77a9 subrepo: normalize path part of URLs so that pulling subrepos from webdir works
Edouard Gomez <ed.gomez@free.fr>
parents:
diff changeset
103
36686
0c14b3f23294 test-subrepo: demonstrate problems with subrepo sharing and absolute paths
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
104 Test sharing with a remote URL reference
0c14b3f23294 test-subrepo: demonstrate problems with subrepo sharing and absolute paths
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
105
0c14b3f23294 test-subrepo: demonstrate problems with subrepo sharing and absolute paths
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
106 $ hg init absolute_subrepo
0c14b3f23294 test-subrepo: demonstrate problems with subrepo sharing and absolute paths
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
107 $ cd absolute_subrepo
0c14b3f23294 test-subrepo: demonstrate problems with subrepo sharing and absolute paths
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
108 $ echo foo > foo.txt
0c14b3f23294 test-subrepo: demonstrate problems with subrepo sharing and absolute paths
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
109 $ hg ci -Am 'initial commit'
0c14b3f23294 test-subrepo: demonstrate problems with subrepo sharing and absolute paths
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
110 adding foo.txt
0c14b3f23294 test-subrepo: demonstrate problems with subrepo sharing and absolute paths
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
111 $ echo "sub = http://localhost:$HGPORT/sub" > .hgsub
0c14b3f23294 test-subrepo: demonstrate problems with subrepo sharing and absolute paths
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
112 $ hg ci -Am 'add absolute subrepo'
0c14b3f23294 test-subrepo: demonstrate problems with subrepo sharing and absolute paths
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
113 adding .hgsub
0c14b3f23294 test-subrepo: demonstrate problems with subrepo sharing and absolute paths
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
114 $ cd ..
0c14b3f23294 test-subrepo: demonstrate problems with subrepo sharing and absolute paths
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
115
36688
fb278041df06 subrepo: activate clone pooling to enable sharing with remote URLs
Matt Harbison <matt_harbison@yahoo.com>
parents: 36687
diff changeset
116 Clone pooling works for local clones with a remote subrepo reference. The
fb278041df06 subrepo: activate clone pooling to enable sharing with remote URLs
Matt Harbison <matt_harbison@yahoo.com>
parents: 36687
diff changeset
117 subrepo is cloned to the pool and shared from there, so that all clones will
fb278041df06 subrepo: activate clone pooling to enable sharing with remote URLs
Matt Harbison <matt_harbison@yahoo.com>
parents: 36687
diff changeset
118 share the same subrepo.
36686
0c14b3f23294 test-subrepo: demonstrate problems with subrepo sharing and absolute paths
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
119
0c14b3f23294 test-subrepo: demonstrate problems with subrepo sharing and absolute paths
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
120 $ hg --config extensions.share= --config share.pool=$TESTTMP/pool \
0c14b3f23294 test-subrepo: demonstrate problems with subrepo sharing and absolute paths
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
121 > clone absolute_subrepo cloned_from_abs
0c14b3f23294 test-subrepo: demonstrate problems with subrepo sharing and absolute paths
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
122 (sharing from new pooled repository 8d6a2f1e993b34b6557de0042cfe825ae12a8dae)
0c14b3f23294 test-subrepo: demonstrate problems with subrepo sharing and absolute paths
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
123 requesting all changes
0c14b3f23294 test-subrepo: demonstrate problems with subrepo sharing and absolute paths
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
124 adding changesets
0c14b3f23294 test-subrepo: demonstrate problems with subrepo sharing and absolute paths
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
125 adding manifests
0c14b3f23294 test-subrepo: demonstrate problems with subrepo sharing and absolute paths
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
126 adding file changes
0c14b3f23294 test-subrepo: demonstrate problems with subrepo sharing and absolute paths
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
127 added 2 changesets with 3 changes to 3 files
36689
b394778b1a50 test-subrepo: glob away an unstable hash
Matt Harbison <matt_harbison@yahoo.com>
parents: 36688
diff changeset
128 new changesets 8d6a2f1e993b:* (glob)
36686
0c14b3f23294 test-subrepo: demonstrate problems with subrepo sharing and absolute paths
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
129 searching for changes
0c14b3f23294 test-subrepo: demonstrate problems with subrepo sharing and absolute paths
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
130 no changes found
0c14b3f23294 test-subrepo: demonstrate problems with subrepo sharing and absolute paths
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
131 updating working directory
36687
eed02e192770 subrepo: don't attempt to share remote sources (issue5793)
Matt Harbison <matt_harbison@yahoo.com>
parents: 36686
diff changeset
132 cloning subrepo sub from http://localhost:$HGPORT/sub
36688
fb278041df06 subrepo: activate clone pooling to enable sharing with remote URLs
Matt Harbison <matt_harbison@yahoo.com>
parents: 36687
diff changeset
133 (sharing from new pooled repository 863c1745b441bd97a8c4a096e87793073f4fb215)
36687
eed02e192770 subrepo: don't attempt to share remote sources (issue5793)
Matt Harbison <matt_harbison@yahoo.com>
parents: 36686
diff changeset
134 requesting all changes
eed02e192770 subrepo: don't attempt to share remote sources (issue5793)
Matt Harbison <matt_harbison@yahoo.com>
parents: 36686
diff changeset
135 adding changesets
eed02e192770 subrepo: don't attempt to share remote sources (issue5793)
Matt Harbison <matt_harbison@yahoo.com>
parents: 36686
diff changeset
136 adding manifests
eed02e192770 subrepo: don't attempt to share remote sources (issue5793)
Matt Harbison <matt_harbison@yahoo.com>
parents: 36686
diff changeset
137 adding file changes
eed02e192770 subrepo: don't attempt to share remote sources (issue5793)
Matt Harbison <matt_harbison@yahoo.com>
parents: 36686
diff changeset
138 added 1 changesets with 1 changes to 1 files
eed02e192770 subrepo: don't attempt to share remote sources (issue5793)
Matt Harbison <matt_harbison@yahoo.com>
parents: 36686
diff changeset
139 new changesets 863c1745b441
36688
fb278041df06 subrepo: activate clone pooling to enable sharing with remote URLs
Matt Harbison <matt_harbison@yahoo.com>
parents: 36687
diff changeset
140 searching for changes
fb278041df06 subrepo: activate clone pooling to enable sharing with remote URLs
Matt Harbison <matt_harbison@yahoo.com>
parents: 36687
diff changeset
141 no changes found
36687
eed02e192770 subrepo: don't attempt to share remote sources (issue5793)
Matt Harbison <matt_harbison@yahoo.com>
parents: 36686
diff changeset
142 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
eed02e192770 subrepo: don't attempt to share remote sources (issue5793)
Matt Harbison <matt_harbison@yahoo.com>
parents: 36686
diff changeset
143
eed02e192770 subrepo: don't attempt to share remote sources (issue5793)
Matt Harbison <matt_harbison@yahoo.com>
parents: 36686
diff changeset
144 Vanilla sharing with a subrepo remote path reference will clone the subrepo.
eed02e192770 subrepo: don't attempt to share remote sources (issue5793)
Matt Harbison <matt_harbison@yahoo.com>
parents: 36686
diff changeset
145 Each share of these top level repos will end up with independent subrepo copies
eed02e192770 subrepo: don't attempt to share remote sources (issue5793)
Matt Harbison <matt_harbison@yahoo.com>
parents: 36686
diff changeset
146 (potentially leaving the shared parent with dangling cset references).
36686
0c14b3f23294 test-subrepo: demonstrate problems with subrepo sharing and absolute paths
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
147
0c14b3f23294 test-subrepo: demonstrate problems with subrepo sharing and absolute paths
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
148 $ hg --config extensions.share= share absolute_subrepo shared_from_abs
0c14b3f23294 test-subrepo: demonstrate problems with subrepo sharing and absolute paths
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
149 updating working directory
36687
eed02e192770 subrepo: don't attempt to share remote sources (issue5793)
Matt Harbison <matt_harbison@yahoo.com>
parents: 36686
diff changeset
150 cloning subrepo sub from http://localhost:$HGPORT/sub
eed02e192770 subrepo: don't attempt to share remote sources (issue5793)
Matt Harbison <matt_harbison@yahoo.com>
parents: 36686
diff changeset
151 requesting all changes
eed02e192770 subrepo: don't attempt to share remote sources (issue5793)
Matt Harbison <matt_harbison@yahoo.com>
parents: 36686
diff changeset
152 adding changesets
eed02e192770 subrepo: don't attempt to share remote sources (issue5793)
Matt Harbison <matt_harbison@yahoo.com>
parents: 36686
diff changeset
153 adding manifests
eed02e192770 subrepo: don't attempt to share remote sources (issue5793)
Matt Harbison <matt_harbison@yahoo.com>
parents: 36686
diff changeset
154 adding file changes
eed02e192770 subrepo: don't attempt to share remote sources (issue5793)
Matt Harbison <matt_harbison@yahoo.com>
parents: 36686
diff changeset
155 added 1 changesets with 1 changes to 1 files
eed02e192770 subrepo: don't attempt to share remote sources (issue5793)
Matt Harbison <matt_harbison@yahoo.com>
parents: 36686
diff changeset
156 new changesets 863c1745b441
eed02e192770 subrepo: don't attempt to share remote sources (issue5793)
Matt Harbison <matt_harbison@yahoo.com>
parents: 36686
diff changeset
157 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
36686
0c14b3f23294 test-subrepo: demonstrate problems with subrepo sharing and absolute paths
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
158
0c14b3f23294 test-subrepo: demonstrate problems with subrepo sharing and absolute paths
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
159 $ hg --config extensions.share= share -U absolute_subrepo shared_from_abs2
0c14b3f23294 test-subrepo: demonstrate problems with subrepo sharing and absolute paths
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
160 $ hg -R shared_from_abs2 update -r tip
36687
eed02e192770 subrepo: don't attempt to share remote sources (issue5793)
Matt Harbison <matt_harbison@yahoo.com>
parents: 36686
diff changeset
161 cloning subrepo sub from http://localhost:$HGPORT/sub
eed02e192770 subrepo: don't attempt to share remote sources (issue5793)
Matt Harbison <matt_harbison@yahoo.com>
parents: 36686
diff changeset
162 requesting all changes
eed02e192770 subrepo: don't attempt to share remote sources (issue5793)
Matt Harbison <matt_harbison@yahoo.com>
parents: 36686
diff changeset
163 adding changesets
eed02e192770 subrepo: don't attempt to share remote sources (issue5793)
Matt Harbison <matt_harbison@yahoo.com>
parents: 36686
diff changeset
164 adding manifests
eed02e192770 subrepo: don't attempt to share remote sources (issue5793)
Matt Harbison <matt_harbison@yahoo.com>
parents: 36686
diff changeset
165 adding file changes
eed02e192770 subrepo: don't attempt to share remote sources (issue5793)
Matt Harbison <matt_harbison@yahoo.com>
parents: 36686
diff changeset
166 added 1 changesets with 1 changes to 1 files
eed02e192770 subrepo: don't attempt to share remote sources (issue5793)
Matt Harbison <matt_harbison@yahoo.com>
parents: 36686
diff changeset
167 new changesets 863c1745b441
eed02e192770 subrepo: don't attempt to share remote sources (issue5793)
Matt Harbison <matt_harbison@yahoo.com>
parents: 36686
diff changeset
168 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
36686
0c14b3f23294 test-subrepo: demonstrate problems with subrepo sharing and absolute paths
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
169
36687
eed02e192770 subrepo: don't attempt to share remote sources (issue5793)
Matt Harbison <matt_harbison@yahoo.com>
parents: 36686
diff changeset
170 A parent repo without its subrepo available locally can be shared if the
36686
0c14b3f23294 test-subrepo: demonstrate problems with subrepo sharing and absolute paths
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
171 subrepo is referenced by absolute path.
0c14b3f23294 test-subrepo: demonstrate problems with subrepo sharing and absolute paths
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
172
0c14b3f23294 test-subrepo: demonstrate problems with subrepo sharing and absolute paths
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
173 $ hg clone -U absolute_subrepo cloned_null_from_abs
0c14b3f23294 test-subrepo: demonstrate problems with subrepo sharing and absolute paths
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
174 $ hg --config extensions.share= share cloned_null_from_abs shared_from_null_abs
0c14b3f23294 test-subrepo: demonstrate problems with subrepo sharing and absolute paths
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
175 updating working directory
36687
eed02e192770 subrepo: don't attempt to share remote sources (issue5793)
Matt Harbison <matt_harbison@yahoo.com>
parents: 36686
diff changeset
176 cloning subrepo sub from http://localhost:$HGPORT/sub
eed02e192770 subrepo: don't attempt to share remote sources (issue5793)
Matt Harbison <matt_harbison@yahoo.com>
parents: 36686
diff changeset
177 requesting all changes
eed02e192770 subrepo: don't attempt to share remote sources (issue5793)
Matt Harbison <matt_harbison@yahoo.com>
parents: 36686
diff changeset
178 adding changesets
eed02e192770 subrepo: don't attempt to share remote sources (issue5793)
Matt Harbison <matt_harbison@yahoo.com>
parents: 36686
diff changeset
179 adding manifests
eed02e192770 subrepo: don't attempt to share remote sources (issue5793)
Matt Harbison <matt_harbison@yahoo.com>
parents: 36686
diff changeset
180 adding file changes
eed02e192770 subrepo: don't attempt to share remote sources (issue5793)
Matt Harbison <matt_harbison@yahoo.com>
parents: 36686
diff changeset
181 added 1 changesets with 1 changes to 1 files
eed02e192770 subrepo: don't attempt to share remote sources (issue5793)
Matt Harbison <matt_harbison@yahoo.com>
parents: 36686
diff changeset
182 new changesets 863c1745b441
eed02e192770 subrepo: don't attempt to share remote sources (issue5793)
Matt Harbison <matt_harbison@yahoo.com>
parents: 36686
diff changeset
183 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
36686
0c14b3f23294 test-subrepo: demonstrate problems with subrepo sharing and absolute paths
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
184
25474
8c14f87bd0ae tests: drop DAEMON_PIDS from killdaemons calls
Matt Mackall <mpm@selenic.com>
parents: 25472
diff changeset
185 $ killdaemons.py
14187
9bbaafddfa90 tests: test subrepos with ssh urls
Mads Kiilerich <mads@kiilerich.com>
parents: 13138
diff changeset
186
9bbaafddfa90 tests: test subrepos with ssh urls
Mads Kiilerich <mads@kiilerich.com>
parents: 13138
diff changeset
187 subrepo paths with ssh urls
9bbaafddfa90 tests: test subrepos with ssh urls
Mads Kiilerich <mads@kiilerich.com>
parents: 13138
diff changeset
188
47920
9c4204b7f3e4 tests: rely on dummyssh being the default
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents: 45839
diff changeset
189 $ hg clone ssh://user@dummy/cloned sshclone
14187
9bbaafddfa90 tests: test subrepos with ssh urls
Mads Kiilerich <mads@kiilerich.com>
parents: 13138
diff changeset
190 requesting all changes
9bbaafddfa90 tests: test subrepos with ssh urls
Mads Kiilerich <mads@kiilerich.com>
parents: 13138
diff changeset
191 adding changesets
9bbaafddfa90 tests: test subrepos with ssh urls
Mads Kiilerich <mads@kiilerich.com>
parents: 13138
diff changeset
192 adding manifests
9bbaafddfa90 tests: test subrepos with ssh urls
Mads Kiilerich <mads@kiilerich.com>
parents: 13138
diff changeset
193 adding file changes
9bbaafddfa90 tests: test subrepos with ssh urls
Mads Kiilerich <mads@kiilerich.com>
parents: 13138
diff changeset
194 added 1 changesets with 3 changes to 3 files
34661
eb586ed5d8ce transaction-summary: show the range of new revisions upon pull/unbundle (BC)
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 33335
diff changeset
195 new changesets fdfeeb3e979e
14187
9bbaafddfa90 tests: test subrepos with ssh urls
Mads Kiilerich <mads@kiilerich.com>
parents: 13138
diff changeset
196 updating to branch default
14281
ccb7240acf32 subrepo: create subrepos using clone instead of pull
Martin Geisler <mg@aragost.com>
parents: 14187
diff changeset
197 cloning subrepo sub from ssh://user@dummy/sub
14187
9bbaafddfa90 tests: test subrepos with ssh urls
Mads Kiilerich <mads@kiilerich.com>
parents: 13138
diff changeset
198 requesting all changes
9bbaafddfa90 tests: test subrepos with ssh urls
Mads Kiilerich <mads@kiilerich.com>
parents: 13138
diff changeset
199 adding changesets
9bbaafddfa90 tests: test subrepos with ssh urls
Mads Kiilerich <mads@kiilerich.com>
parents: 13138
diff changeset
200 adding manifests
9bbaafddfa90 tests: test subrepos with ssh urls
Mads Kiilerich <mads@kiilerich.com>
parents: 13138
diff changeset
201 adding file changes
9bbaafddfa90 tests: test subrepos with ssh urls
Mads Kiilerich <mads@kiilerich.com>
parents: 13138
diff changeset
202 added 1 changesets with 1 changes to 1 files
34661
eb586ed5d8ce transaction-summary: show the range of new revisions upon pull/unbundle (BC)
Denis Laxalde <denis.laxalde@logilab.fr>
parents: 33335
diff changeset
203 new changesets 863c1745b441
14187
9bbaafddfa90 tests: test subrepos with ssh urls
Mads Kiilerich <mads@kiilerich.com>
parents: 13138
diff changeset
204 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
9bbaafddfa90 tests: test subrepos with ssh urls
Mads Kiilerich <mads@kiilerich.com>
parents: 13138
diff changeset
205
47920
9c4204b7f3e4 tests: rely on dummyssh being the default
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents: 45839
diff changeset
206 $ hg -R sshclone push ssh://user@dummy/`pwd`/cloned
14187
9bbaafddfa90 tests: test subrepos with ssh urls
Mads Kiilerich <mads@kiilerich.com>
parents: 13138
diff changeset
207 pushing to ssh://user@dummy/$TESTTMP/cloned
9bbaafddfa90 tests: test subrepos with ssh urls
Mads Kiilerich <mads@kiilerich.com>
parents: 13138
diff changeset
208 pushing subrepo sub to ssh://user@dummy/$TESTTMP/sub
9bbaafddfa90 tests: test subrepos with ssh urls
Mads Kiilerich <mads@kiilerich.com>
parents: 13138
diff changeset
209 searching for changes
9bbaafddfa90 tests: test subrepos with ssh urls
Mads Kiilerich <mads@kiilerich.com>
parents: 13138
diff changeset
210 no changes found
9bbaafddfa90 tests: test subrepos with ssh urls
Mads Kiilerich <mads@kiilerich.com>
parents: 13138
diff changeset
211 searching for changes
9bbaafddfa90 tests: test subrepos with ssh urls
Mads Kiilerich <mads@kiilerich.com>
parents: 13138
diff changeset
212 no changes found
16023
90f8b8dd0326 push: return 1 if no changes found (issue3228)
Matt Mackall <mpm@selenic.com>
parents: 15622
diff changeset
213 [1]
14187
9bbaafddfa90 tests: test subrepos with ssh urls
Mads Kiilerich <mads@kiilerich.com>
parents: 13138
diff changeset
214
9bbaafddfa90 tests: test subrepos with ssh urls
Mads Kiilerich <mads@kiilerich.com>
parents: 13138
diff changeset
215 $ cat dummylog
15622
86fc364ca5f8 sshrepo: don't quote obviously safe strings (issue2983)
Mads Kiilerich <mads@kiilerich.com>
parents: 15581
diff changeset
216 Got arguments 1:user@dummy 2:hg -R cloned serve --stdio
86fc364ca5f8 sshrepo: don't quote obviously safe strings (issue2983)
Mads Kiilerich <mads@kiilerich.com>
parents: 15581
diff changeset
217 Got arguments 1:user@dummy 2:hg -R sub serve --stdio
86fc364ca5f8 sshrepo: don't quote obviously safe strings (issue2983)
Mads Kiilerich <mads@kiilerich.com>
parents: 15581
diff changeset
218 Got arguments 1:user@dummy 2:hg -R $TESTTMP/cloned serve --stdio
86fc364ca5f8 sshrepo: don't quote obviously safe strings (issue2983)
Mads Kiilerich <mads@kiilerich.com>
parents: 15581
diff changeset
219 Got arguments 1:user@dummy 2:hg -R $TESTTMP/sub serve --stdio