Mercurial > hg
annotate tests/test-strip-branch-cache.t @ 51493:82c1a388e86a
branchcache: explicitly track inheritence "state"
We move from a binary "dirty" flag to a three value "state": "clean", "inherited", "dirty".
The "inherited" means that the branch cache is not only "clean", but it is a
duplicate of its parent filter.
If a branch cache is "inherited", we can non only skip writing its value on
disk, but it is a good idea to delete any stale value on disk, as those will
just waste time (and possibly induce bug) in the future.
We only do this in the update related to transaction or explicit cache update
(e.g `hg debugupdatecache`). Deleting the file when we simply detected a stall
cache during a read only operation seems more dangerous.
We rename `copy` to `inherit_for` to clarify we associate a stronger semantic
to the operation.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Sun, 10 Mar 2024 05:10:00 +0100 |
parents | 2e8a88e5809f |
children |
rev | line source |
---|---|
51492
2e8a88e5809f
branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49071
diff
changeset
|
1 This test cover a bug that no longer exist. |
2e8a88e5809f
branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49071
diff
changeset
|
2 |
49071
9caf23927d04
branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
3 Define helpers. |
9caf23927d04
branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
4 |
9caf23927d04
branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
5 $ hg_log () { hg log -G -T "{rev}:{node|short}"; } |
9caf23927d04
branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
6 $ commit () { echo "foo - ${2:-$1}" > $1; hg commit -Aqm "Edited $1"; } |
9caf23927d04
branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
7 $ strip() { hg --config extensions.strip= strip -q -r "$1" ; } |
9caf23927d04
branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
8 |
9caf23927d04
branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
9 Setup hg repo. |
9caf23927d04
branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
10 |
9caf23927d04
branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
11 $ hg init repo |
9caf23927d04
branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
12 $ cd repo |
9caf23927d04
branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
13 $ touch x; hg add x; hg commit -m "initial" |
9caf23927d04
branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
14 $ hg clone -q . ../clone |
9caf23927d04
branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
15 $ commit a |
9caf23927d04
branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
16 |
9caf23927d04
branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
17 $ cd ../clone |
9caf23927d04
branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
18 |
9caf23927d04
branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
19 $ commit b |
9caf23927d04
branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
20 |
9caf23927d04
branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
21 $ hg pull -q ../repo |
9caf23927d04
branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
22 |
51492
2e8a88e5809f
branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49071
diff
changeset
|
23 $ ls -1 .hg/cache/branch?* |
2e8a88e5809f
branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49071
diff
changeset
|
24 .hg/cache/branch2-base |
2e8a88e5809f
branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49071
diff
changeset
|
25 .hg/cache/branch2-served |
2e8a88e5809f
branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49071
diff
changeset
|
26 $ cat .hg/cache/branch?-served |
49071
9caf23927d04
branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
27 222ae9789a75703f9836e44de7db179cbfd420ee 2 |
9caf23927d04
branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
28 a3498d6e39376d2456425dd8c692367bdbf00fa2 o default |
9caf23927d04
branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
29 222ae9789a75703f9836e44de7db179cbfd420ee o default |
9caf23927d04
branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
30 |
9caf23927d04
branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
31 $ hg_log |
9caf23927d04
branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
32 o 2:222ae9789a75 |
9caf23927d04
branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
33 | |
9caf23927d04
branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
34 | @ 1:a3498d6e3937 |
9caf23927d04
branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
35 |/ |
9caf23927d04
branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
36 o 0:7ab0a3bd758a |
9caf23927d04
branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
37 |
9caf23927d04
branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
38 |
9caf23927d04
branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
39 $ strip '1:' |
9caf23927d04
branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
40 |
51492
2e8a88e5809f
branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49071
diff
changeset
|
41 After the strip the "served" cache is now identical to the "base" one, and the |
2e8a88e5809f
branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49071
diff
changeset
|
42 older one have been actively deleted. |
49071
9caf23927d04
branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
43 |
51492
2e8a88e5809f
branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49071
diff
changeset
|
44 $ ls -1 .hg/cache/branch?* |
2e8a88e5809f
branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49071
diff
changeset
|
45 .hg/cache/branch2-base |
51493
82c1a388e86a
branchcache: explicitly track inheritence "state"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51492
diff
changeset
|
46 $ cat .hg/cache/branch?-base |
82c1a388e86a
branchcache: explicitly track inheritence "state"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51492
diff
changeset
|
47 7ab0a3bd758a58b9f79557ce708533e627776cce 0 |
82c1a388e86a
branchcache: explicitly track inheritence "state"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51492
diff
changeset
|
48 7ab0a3bd758a58b9f79557ce708533e627776cce o default |
49071
9caf23927d04
branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
49 |
51492
2e8a88e5809f
branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49071
diff
changeset
|
50 We do a new commit and we get a new valid branchmap for the served version |
49071
9caf23927d04
branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
51 |
51492
2e8a88e5809f
branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49071
diff
changeset
|
52 $ commit c |
2e8a88e5809f
branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49071
diff
changeset
|
53 $ ls -1 .hg/cache/branch?* |
2e8a88e5809f
branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49071
diff
changeset
|
54 .hg/cache/branch2-base |
2e8a88e5809f
branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49071
diff
changeset
|
55 .hg/cache/branch2-served |
2e8a88e5809f
branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49071
diff
changeset
|
56 $ cat .hg/cache/branch?-served |
2e8a88e5809f
branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49071
diff
changeset
|
57 a1602b357cfca067600406eb19060c7128804d72 1 |
2e8a88e5809f
branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49071
diff
changeset
|
58 a1602b357cfca067600406eb19060c7128804d72 o default |
2e8a88e5809f
branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49071
diff
changeset
|
59 |
49071
9caf23927d04
branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
60 |
9caf23927d04
branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
61 On pull we end up with the same tip, and so wrongly reuse the invalid cache and crash. |
9caf23927d04
branchmap: add a test that shows bad interaction with strip
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
diff
changeset
|
62 |
51492
2e8a88e5809f
branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49071
diff
changeset
|
63 $ hg pull ../repo --quiet |
2e8a88e5809f
branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49071
diff
changeset
|
64 $ hg heads -T '{rev} {node} {branch}\n' |
2e8a88e5809f
branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49071
diff
changeset
|
65 2 222ae9789a75703f9836e44de7db179cbfd420ee default |
2e8a88e5809f
branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49071
diff
changeset
|
66 1 a1602b357cfca067600406eb19060c7128804d72 default |
2e8a88e5809f
branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49071
diff
changeset
|
67 $ ls -1 .hg/cache/branch?* |
2e8a88e5809f
branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49071
diff
changeset
|
68 .hg/cache/branch2-base |
2e8a88e5809f
branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49071
diff
changeset
|
69 .hg/cache/branch2-served |
2e8a88e5809f
branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49071
diff
changeset
|
70 $ cat .hg/cache/branch?-served |
2e8a88e5809f
branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49071
diff
changeset
|
71 222ae9789a75703f9836e44de7db179cbfd420ee 2 |
2e8a88e5809f
branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49071
diff
changeset
|
72 a1602b357cfca067600406eb19060c7128804d72 o default |
2e8a88e5809f
branchcache: stop writing more branchcache file on disk than needed
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49071
diff
changeset
|
73 222ae9789a75703f9836e44de7db179cbfd420ee o default |