author | Raphaël Gomès <rgomes@octobus.net> |
Mon, 12 Jun 2023 10:50:00 +0200 | |
branch | stable |
changeset 50395 | e7a3611181aa |
parent 50389 | bf16ef96defe |
child 50694 | a41eeb877d07 |
permissions | -rw-r--r-- |
50388
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 |
50395
e7a3611181aa
test-dirstate-version-fallback: future-proof the test for a different default
Raphaël Gomès <rgomes@octobus.net>
parents:
50389
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:
50389
diff
changeset
|
5 |
> use-dirstate-v2=no |
50388
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 |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
13 |
$ hg add a |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
14 |
$ hg commit -m a |
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 |
|
50389
bf16ef96defe
rust-dirstate: fall back to v1 if reading v2 failed
Raphaël Gomès <rgomes@octobus.net>
parents:
50388
diff
changeset
|
25 |
$ hg debugupgraderepo -q --config format.use-dirstate-v2=1 --run | egrep 'added:|removed:' |
50388
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 |
50389
bf16ef96defe
rust-dirstate: fall back to v1 if reading v2 failed
Raphaël Gomès <rgomes@octobus.net>
parents:
50388
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:
50388
diff
changeset
|
43 |
|
bf16ef96defe
rust-dirstate: fall back to v1 if reading v2 failed
Raphaël Gomès <rgomes@octobus.net>
parents:
50388
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:
50388
diff
changeset
|
45 |
$ echo "I ate your data" > .hg/dirstate |
50388
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
46 |
|
50389
bf16ef96defe
rust-dirstate: fall back to v1 if reading v2 failed
Raphaël Gomès <rgomes@octobus.net>
parents:
50388
diff
changeset
|
47 |
$ hg st |
bf16ef96defe
rust-dirstate: fall back to v1 if reading v2 failed
Raphaël Gomès <rgomes@octobus.net>
parents:
50388
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:
50388
diff
changeset
|
49 |
(falling back to dirstate-v1 from v2 also failed) (no-rhg !) |
bf16ef96defe
rust-dirstate: fall back to v1 if reading v2 failed
Raphaël Gomès <rgomes@octobus.net>
parents:
50388
diff
changeset
|
50 |
abort: Too little data for dirstate. (rhg !) |
bf16ef96defe
rust-dirstate: fall back to v1 if reading v2 failed
Raphaël Gomès <rgomes@octobus.net>
parents:
50388
diff
changeset
|
51 |
[255] |