author | Raphaël Gomès <rgomes@octobus.net> |
Mon, 05 Jun 2023 16:43:27 +0200 | |
branch | stable |
changeset 50389 | bf16ef96defe |
parent 50388 | 9e08cfbe77b1 |
child 50395 | e7a3611181aa |
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 |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
4 |
> EOF |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
5 |
|
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
6 |
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
|
7 |
|
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
8 |
$ hg init repo |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
9 |
$ cd repo |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
10 |
$ echo a > a |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
11 |
$ hg add a |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
12 |
$ 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
|
13 |
$ 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
|
14 |
[1] |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
15 |
$ 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
|
16 |
.hg/dirstate |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
17 |
|
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
18 |
Copy v1 dirstate |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
19 |
$ 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
|
20 |
|
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
21 |
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
|
22 |
|
50389
bf16ef96defe
rust-dirstate: fall back to v1 if reading v2 failed
Raphaël Gomès <rgomes@octobus.net>
parents:
50388
diff
changeset
|
23 |
$ 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
|
24 |
added: dirstate-v2 |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
25 |
$ 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
|
26 |
dirstate-v2 |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
27 |
$ 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
|
28 |
.hg/dirstate |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
29 |
.hg/dirstate.* (glob) |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
30 |
|
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
31 |
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
|
32 |
|
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
33 |
$ rm .hg/dirstate* |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
34 |
$ 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
|
35 |
|
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
36 |
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
|
37 |
$ hg st |
9e08cfbe77b1
dirstate: add test showing dirstate version mismatch causes an error
Raphaël Gomès <rgomes@octobus.net>
parents:
diff
changeset
|
38 |
$ 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
|
39 |
.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
|
40 |
.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
|
41 |
|
bf16ef96defe
rust-dirstate: fall back to v1 if reading v2 failed
Raphaël Gomès <rgomes@octobus.net>
parents:
50388
diff
changeset
|
42 |
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
|
43 |
$ 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
|
44 |
|
50389
bf16ef96defe
rust-dirstate: fall back to v1 if reading v2 failed
Raphaël Gomès <rgomes@octobus.net>
parents:
50388
diff
changeset
|
45 |
$ hg st |
bf16ef96defe
rust-dirstate: fall back to v1 if reading v2 failed
Raphaël Gomès <rgomes@octobus.net>
parents:
50388
diff
changeset
|
46 |
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
|
47 |
(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
|
48 |
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
|
49 |
[255] |