Mercurial > hg
annotate tests/test-dirstate-version-fallback.t @ 51555:15e680a44502
unbundle: move most of the logic on cmdutil to help debug::unbundle reuse
This make sure `hg debug::unbundle` focus on the core logic.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Wed, 27 Mar 2024 17:46:23 +0000 |
parents | 7e5be4a7cda7 |
children |
rev | line source |
---|---|
50659
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
1 $ cat >> $HGRCPATH << EOF |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
2 > [storage] |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
3 > dirstate-v2.slow-path=allow |
50667
e7a3611181aa
test-dirstate-version-fallback: future-proof the test for a different default
Raphaël Gomès <rgomes@octobus.net>
parents:
50660
diff
changeset
|
4 > [format] |
e7a3611181aa
test-dirstate-version-fallback: future-proof the test for a different default
Raphaël Gomès <rgomes@octobus.net>
parents:
50660
diff
changeset
|
5 > use-dirstate-v2=no |
50659
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
6 > EOF |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
7 |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
8 Set up a v1 repo |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
9 |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
10 $ hg init repo |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
11 $ cd repo |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
12 $ echo a > a |
50723
bfbd84c57bda
dirstate-v2: actually fix the dirstate-v2 upgrade race
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
50686
diff
changeset
|
13 $ touch file-with-somewhat-long-name-to-make-dirstate-v1-bigger-than-v2 |
bfbd84c57bda
dirstate-v2: actually fix the dirstate-v2 upgrade race
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
50686
diff
changeset
|
14 $ hg commit -Aqm a |
50659
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
15 $ hg debugrequires | grep dirstate |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
16 [1] |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
17 $ ls -1 .hg/dirstate* |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
18 .hg/dirstate |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
19 |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
20 Copy v1 dirstate |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
21 $ cp .hg/dirstate $TESTTMP/dirstate-v1-backup |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
22 |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
23 Upgrade it to v2 |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
24 |
50725
7e5be4a7cda7
tests: use grep -E instead of obsolescent egrep
Mads Kiilerich <mads@kiilerich.com>
parents:
50723
diff
changeset
|
25 $ hg debugupgraderepo -q --config format.use-dirstate-v2=1 --run | grep -E 'added:|removed:' |
50659
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
26 added: dirstate-v2 |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
27 $ hg debugrequires | grep dirstate |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
28 dirstate-v2 |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
29 $ ls -1 .hg/dirstate* |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
30 .hg/dirstate |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
31 .hg/dirstate.* (glob) |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
32 |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
33 Manually reset to dirstate v1 to simulate an incomplete dirstate-v2 upgrade |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
34 |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
35 $ rm .hg/dirstate* |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
36 $ cp $TESTTMP/dirstate-v1-backup .hg/dirstate |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
37 |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
38 There should be no errors, but a v2 dirstate should be written back to disk |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
39 $ hg st |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
40 $ ls -1 .hg/dirstate* |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
41 .hg/dirstate |
50660
bf16ef96defe
rust-dirstate: fall back to v1 if reading v2 failed
Raphaël Gomès <rgomes@octobus.net>
parents:
50659
diff
changeset
|
42 .hg/dirstate.* (glob) |
bf16ef96defe
rust-dirstate: fall back to v1 if reading v2 failed
Raphaël Gomès <rgomes@octobus.net>
parents:
50659
diff
changeset
|
43 |
bf16ef96defe
rust-dirstate: fall back to v1 if reading v2 failed
Raphaël Gomès <rgomes@octobus.net>
parents:
50659
diff
changeset
|
44 Corrupt the dirstate to see how the errors show up to the user |
bf16ef96defe
rust-dirstate: fall back to v1 if reading v2 failed
Raphaël Gomès <rgomes@octobus.net>
parents:
50659
diff
changeset
|
45 $ echo "I ate your data" > .hg/dirstate |
50659
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
46 |
50660
bf16ef96defe
rust-dirstate: fall back to v1 if reading v2 failed
Raphaël Gomès <rgomes@octobus.net>
parents:
50659
diff
changeset
|
47 $ hg st |
bf16ef96defe
rust-dirstate: fall back to v1 if reading v2 failed
Raphaël Gomès <rgomes@octobus.net>
parents:
50659
diff
changeset
|
48 abort: working directory state appears damaged! (no-rhg !) |
bf16ef96defe
rust-dirstate: fall back to v1 if reading v2 failed
Raphaël Gomès <rgomes@octobus.net>
parents:
50659
diff
changeset
|
49 (falling back to dirstate-v1 from v2 also failed) (no-rhg !) |
50686
a41eeb877d07
branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50667
diff
changeset
|
50 abort: Too little data for dirstate: 16 bytes. (rhg !) |
50660
bf16ef96defe
rust-dirstate: fall back to v1 if reading v2 failed
Raphaël Gomès <rgomes@octobus.net>
parents:
50659
diff
changeset
|
51 [255] |