Mercurial > hg
annotate tests/test-dirstate.t @ 50916:98b8836d0e82
hgweb: use sysstr to set attribute on diff option
Attribute identifier should be `str` not `bytes`.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Fri, 01 Sep 2023 12:09:54 +0200 |
parents | ecd28d89c29e |
children |
rev | line source |
---|---|
48068
bf8837e3d7ce
dirstate: Remove the flat Rust DirstateMap implementation
Simon Sapin <simon.sapin@octobus.net>
parents:
47281
diff
changeset
|
1 #testcases dirstate-v1 dirstate-v2 |
47129
93eb6c8035a9
dirstate-tree: Add a dirstate-v1-tree variant of some tests
Simon Sapin <simon.sapin@octobus.net>
parents:
45681
diff
changeset
|
2 |
47281
6763913fa175
dirstate-v2: Add a variant of some tests, that uses the new format
Simon Sapin <simon.sapin@octobus.net>
parents:
47129
diff
changeset
|
3 #if dirstate-v2 |
48235
5c567aca080d
dirstate-v2: add an option to prevent unintentional slow dirstate-v2
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48223
diff
changeset
|
4 $ cat >> $HGRCPATH << EOF |
5c567aca080d
dirstate-v2: add an option to prevent unintentional slow dirstate-v2
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48223
diff
changeset
|
5 > [format] |
48674
f7086f6173f8
dirstate-v2: rename the configuration to enable the format
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48295
diff
changeset
|
6 > use-dirstate-v2=1 |
48235
5c567aca080d
dirstate-v2: add an option to prevent unintentional slow dirstate-v2
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48223
diff
changeset
|
7 > [storage] |
5c567aca080d
dirstate-v2: add an option to prevent unintentional slow dirstate-v2
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48223
diff
changeset
|
8 > dirstate-v2.slow-path=allow |
5c567aca080d
dirstate-v2: add an option to prevent unintentional slow dirstate-v2
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48223
diff
changeset
|
9 > EOF |
47281
6763913fa175
dirstate-v2: Add a variant of some tests, that uses the new format
Simon Sapin <simon.sapin@octobus.net>
parents:
47129
diff
changeset
|
10 #endif |
6763913fa175
dirstate-v2: Add a variant of some tests, that uses the new format
Simon Sapin <simon.sapin@octobus.net>
parents:
47129
diff
changeset
|
11 |
11888
2bd699886ffc
tests: combine test-dirstate-future.t
Adrian Buehlmann <adrian@cadifra.com>
parents:
11887
diff
changeset
|
12 ------ Test dirstate._dirs refcounting |
7096
6dab29f6df37
dirstate._dirs: fix refcounting broken by 7dfac37cfabf
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
13 |
11887
76818b28ce98
tests: unify test-dirstatedirs
Adrian Buehlmann <adrian@cadifra.com>
parents:
7096
diff
changeset
|
14 $ hg init t |
76818b28ce98
tests: unify test-dirstatedirs
Adrian Buehlmann <adrian@cadifra.com>
parents:
7096
diff
changeset
|
15 $ cd t |
76818b28ce98
tests: unify test-dirstatedirs
Adrian Buehlmann <adrian@cadifra.com>
parents:
7096
diff
changeset
|
16 $ mkdir -p a/b/c/d |
76818b28ce98
tests: unify test-dirstatedirs
Adrian Buehlmann <adrian@cadifra.com>
parents:
7096
diff
changeset
|
17 $ touch a/b/c/d/x |
76818b28ce98
tests: unify test-dirstatedirs
Adrian Buehlmann <adrian@cadifra.com>
parents:
7096
diff
changeset
|
18 $ touch a/b/c/d/y |
76818b28ce98
tests: unify test-dirstatedirs
Adrian Buehlmann <adrian@cadifra.com>
parents:
7096
diff
changeset
|
19 $ touch a/b/c/d/z |
76818b28ce98
tests: unify test-dirstatedirs
Adrian Buehlmann <adrian@cadifra.com>
parents:
7096
diff
changeset
|
20 $ hg ci -Am m |
76818b28ce98
tests: unify test-dirstatedirs
Adrian Buehlmann <adrian@cadifra.com>
parents:
7096
diff
changeset
|
21 adding a/b/c/d/x |
76818b28ce98
tests: unify test-dirstatedirs
Adrian Buehlmann <adrian@cadifra.com>
parents:
7096
diff
changeset
|
22 adding a/b/c/d/y |
76818b28ce98
tests: unify test-dirstatedirs
Adrian Buehlmann <adrian@cadifra.com>
parents:
7096
diff
changeset
|
23 adding a/b/c/d/z |
76818b28ce98
tests: unify test-dirstatedirs
Adrian Buehlmann <adrian@cadifra.com>
parents:
7096
diff
changeset
|
24 $ hg mv a z |
35393
4441705b7111
tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents:
33954
diff
changeset
|
25 moving a/b/c/d/x to z/b/c/d/x |
4441705b7111
tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents:
33954
diff
changeset
|
26 moving a/b/c/d/y to z/b/c/d/y |
4441705b7111
tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents:
33954
diff
changeset
|
27 moving a/b/c/d/z to z/b/c/d/z |
17095
45cf6a91a02d
dirstate: add dir/file collision test
Joshua Redstone <joshua.redstone@fb.com>
parents:
15447
diff
changeset
|
28 |
45cf6a91a02d
dirstate: add dir/file collision test
Joshua Redstone <joshua.redstone@fb.com>
parents:
15447
diff
changeset
|
29 Test name collisions |
45cf6a91a02d
dirstate: add dir/file collision test
Joshua Redstone <joshua.redstone@fb.com>
parents:
15447
diff
changeset
|
30 |
45cf6a91a02d
dirstate: add dir/file collision test
Joshua Redstone <joshua.redstone@fb.com>
parents:
15447
diff
changeset
|
31 $ rm z/b/c/d/x |
45cf6a91a02d
dirstate: add dir/file collision test
Joshua Redstone <joshua.redstone@fb.com>
parents:
15447
diff
changeset
|
32 $ mkdir z/b/c/d/x |
45cf6a91a02d
dirstate: add dir/file collision test
Joshua Redstone <joshua.redstone@fb.com>
parents:
15447
diff
changeset
|
33 $ touch z/b/c/d/x/y |
45cf6a91a02d
dirstate: add dir/file collision test
Joshua Redstone <joshua.redstone@fb.com>
parents:
15447
diff
changeset
|
34 $ hg add z/b/c/d/x/y |
45cf6a91a02d
dirstate: add dir/file collision test
Joshua Redstone <joshua.redstone@fb.com>
parents:
15447
diff
changeset
|
35 abort: file 'z/b/c/d/x' in dirstate clashes with 'z/b/c/d/x/y' |
45cf6a91a02d
dirstate: add dir/file collision test
Joshua Redstone <joshua.redstone@fb.com>
parents:
15447
diff
changeset
|
36 [255] |
45cf6a91a02d
dirstate: add dir/file collision test
Joshua Redstone <joshua.redstone@fb.com>
parents:
15447
diff
changeset
|
37 $ rm -rf z/b/c/d |
45cf6a91a02d
dirstate: add dir/file collision test
Joshua Redstone <joshua.redstone@fb.com>
parents:
15447
diff
changeset
|
38 $ touch z/b/c/d |
45cf6a91a02d
dirstate: add dir/file collision test
Joshua Redstone <joshua.redstone@fb.com>
parents:
15447
diff
changeset
|
39 $ hg add z/b/c/d |
45cf6a91a02d
dirstate: add dir/file collision test
Joshua Redstone <joshua.redstone@fb.com>
parents:
15447
diff
changeset
|
40 abort: directory 'z/b/c/d' already in dirstate |
45cf6a91a02d
dirstate: add dir/file collision test
Joshua Redstone <joshua.redstone@fb.com>
parents:
15447
diff
changeset
|
41 [255] |
45cf6a91a02d
dirstate: add dir/file collision test
Joshua Redstone <joshua.redstone@fb.com>
parents:
15447
diff
changeset
|
42 |
11888
2bd699886ffc
tests: combine test-dirstate-future.t
Adrian Buehlmann <adrian@cadifra.com>
parents:
11887
diff
changeset
|
43 $ cd .. |
11887
76818b28ce98
tests: unify test-dirstatedirs
Adrian Buehlmann <adrian@cadifra.com>
parents:
7096
diff
changeset
|
44 |
12399
4fee1fd3de9a
tests: added a short description to issue numbers
Martin Geisler <mg@aragost.com>
parents:
11888
diff
changeset
|
45 Issue1790: dirstate entry locked into unset if file mtime is set into |
4fee1fd3de9a
tests: added a short description to issue numbers
Martin Geisler <mg@aragost.com>
parents:
11888
diff
changeset
|
46 the future |
11888
2bd699886ffc
tests: combine test-dirstate-future.t
Adrian Buehlmann <adrian@cadifra.com>
parents:
11887
diff
changeset
|
47 |
2bd699886ffc
tests: combine test-dirstate-future.t
Adrian Buehlmann <adrian@cadifra.com>
parents:
11887
diff
changeset
|
48 Prepare test repo: |
2bd699886ffc
tests: combine test-dirstate-future.t
Adrian Buehlmann <adrian@cadifra.com>
parents:
11887
diff
changeset
|
49 |
2bd699886ffc
tests: combine test-dirstate-future.t
Adrian Buehlmann <adrian@cadifra.com>
parents:
11887
diff
changeset
|
50 $ hg init u |
2bd699886ffc
tests: combine test-dirstate-future.t
Adrian Buehlmann <adrian@cadifra.com>
parents:
11887
diff
changeset
|
51 $ cd u |
2bd699886ffc
tests: combine test-dirstate-future.t
Adrian Buehlmann <adrian@cadifra.com>
parents:
11887
diff
changeset
|
52 $ echo a > a |
2bd699886ffc
tests: combine test-dirstate-future.t
Adrian Buehlmann <adrian@cadifra.com>
parents:
11887
diff
changeset
|
53 $ hg add |
2bd699886ffc
tests: combine test-dirstate-future.t
Adrian Buehlmann <adrian@cadifra.com>
parents:
11887
diff
changeset
|
54 adding a |
2bd699886ffc
tests: combine test-dirstate-future.t
Adrian Buehlmann <adrian@cadifra.com>
parents:
11887
diff
changeset
|
55 $ hg ci -m1 |
2bd699886ffc
tests: combine test-dirstate-future.t
Adrian Buehlmann <adrian@cadifra.com>
parents:
11887
diff
changeset
|
56 |
2bd699886ffc
tests: combine test-dirstate-future.t
Adrian Buehlmann <adrian@cadifra.com>
parents:
11887
diff
changeset
|
57 Set mtime of a into the future: |
2bd699886ffc
tests: combine test-dirstate-future.t
Adrian Buehlmann <adrian@cadifra.com>
parents:
11887
diff
changeset
|
58 |
48114
73bcfde21fc2
dirstate: push back the future a bit in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48068
diff
changeset
|
59 $ touch -t 203101011200 a |
11888
2bd699886ffc
tests: combine test-dirstate-future.t
Adrian Buehlmann <adrian@cadifra.com>
parents:
11887
diff
changeset
|
60 |
2bd699886ffc
tests: combine test-dirstate-future.t
Adrian Buehlmann <adrian@cadifra.com>
parents:
11887
diff
changeset
|
61 Status must not set a's entry to unset (issue1790): |
2bd699886ffc
tests: combine test-dirstate-future.t
Adrian Buehlmann <adrian@cadifra.com>
parents:
11887
diff
changeset
|
62 |
2bd699886ffc
tests: combine test-dirstate-future.t
Adrian Buehlmann <adrian@cadifra.com>
parents:
11887
diff
changeset
|
63 $ hg status |
2bd699886ffc
tests: combine test-dirstate-future.t
Adrian Buehlmann <adrian@cadifra.com>
parents:
11887
diff
changeset
|
64 $ hg debugstate |
48114
73bcfde21fc2
dirstate: push back the future a bit in the test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48068
diff
changeset
|
65 n 644 2 2031-01-01 12:00:00 a |
17733
3c775c5a6c03
dirstate: handle large dates and times with masking (issue2608)
Matt Mackall <mpm@selenic.com>
parents:
17095
diff
changeset
|
66 |
3c775c5a6c03
dirstate: handle large dates and times with masking (issue2608)
Matt Mackall <mpm@selenic.com>
parents:
17095
diff
changeset
|
67 Test modulo storage/comparison of absurd dates: |
11888
2bd699886ffc
tests: combine test-dirstate-future.t
Adrian Buehlmann <adrian@cadifra.com>
parents:
11887
diff
changeset
|
68 |
19092
8c560ad1cdc4
tests: AIX can't handle negative date in test-dirstate.t
Jim Hague <jim.hague@acm.org>
parents:
17737
diff
changeset
|
69 #if no-aix |
17733
3c775c5a6c03
dirstate: handle large dates and times with masking (issue2608)
Matt Mackall <mpm@selenic.com>
parents:
17095
diff
changeset
|
70 $ touch -t 195001011200 a |
3c775c5a6c03
dirstate: handle large dates and times with masking (issue2608)
Matt Mackall <mpm@selenic.com>
parents:
17095
diff
changeset
|
71 $ hg st |
3c775c5a6c03
dirstate: handle large dates and times with masking (issue2608)
Matt Mackall <mpm@selenic.com>
parents:
17095
diff
changeset
|
72 $ hg debugstate |
3c775c5a6c03
dirstate: handle large dates and times with masking (issue2608)
Matt Mackall <mpm@selenic.com>
parents:
17095
diff
changeset
|
73 n 644 2 2018-01-19 15:14:08 a |
19092
8c560ad1cdc4
tests: AIX can't handle negative date in test-dirstate.t
Jim Hague <jim.hague@acm.org>
parents:
17737
diff
changeset
|
74 #endif |
22406
2e47e461d2ca
dirstate: add test for exceptions during updates
Durham Goode <durham@fb.com>
parents:
19092
diff
changeset
|
75 |
2e47e461d2ca
dirstate: add test for exceptions during updates
Durham Goode <durham@fb.com>
parents:
19092
diff
changeset
|
76 Verify that exceptions during a dirstate change leave the dirstate |
2e47e461d2ca
dirstate: add test for exceptions during updates
Durham Goode <durham@fb.com>
parents:
19092
diff
changeset
|
77 coherent (issue4353) |
2e47e461d2ca
dirstate: add test for exceptions during updates
Durham Goode <durham@fb.com>
parents:
19092
diff
changeset
|
78 |
2e47e461d2ca
dirstate: add test for exceptions during updates
Durham Goode <durham@fb.com>
parents:
19092
diff
changeset
|
79 $ cat > ../dirstateexception.py <<EOF |
33954
b9765319880e
tests: update test-dirstate to pass our import checker
Augie Fackler <raf@durin42.com>
parents:
26587
diff
changeset
|
80 > from mercurial import ( |
b9765319880e
tests: update test-dirstate to pass our import checker
Augie Fackler <raf@durin42.com>
parents:
26587
diff
changeset
|
81 > error, |
b9765319880e
tests: update test-dirstate to pass our import checker
Augie Fackler <raf@durin42.com>
parents:
26587
diff
changeset
|
82 > extensions, |
44856
b7808443ed6a
mergestate: split out merge state handling code from main merge module
Augie Fackler <augie@google.com>
parents:
42456
diff
changeset
|
83 > mergestate as mergestatemod, |
33954
b9765319880e
tests: update test-dirstate to pass our import checker
Augie Fackler <raf@durin42.com>
parents:
26587
diff
changeset
|
84 > ) |
22406
2e47e461d2ca
dirstate: add test for exceptions during updates
Durham Goode <durham@fb.com>
parents:
19092
diff
changeset
|
85 > |
42456
87a34c767384
merge: fix race that could cause wrong size in dirstate
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
35393
diff
changeset
|
86 > def wraprecordupdates(*args): |
45681
a736ab681b78
errors: stop passing non-strings to Abort's constructor
Martin von Zweigbergk <martinvonz@google.com>
parents:
44856
diff
changeset
|
87 > raise error.Abort(b"simulated error while recording dirstateupdates") |
22406
2e47e461d2ca
dirstate: add test for exceptions during updates
Durham Goode <durham@fb.com>
parents:
19092
diff
changeset
|
88 > |
2e47e461d2ca
dirstate: add test for exceptions during updates
Durham Goode <durham@fb.com>
parents:
19092
diff
changeset
|
89 > def reposetup(ui, repo): |
44856
b7808443ed6a
mergestate: split out merge state handling code from main merge module
Augie Fackler <augie@google.com>
parents:
42456
diff
changeset
|
90 > extensions.wrapfunction(mergestatemod, 'recordupdates', |
b7808443ed6a
mergestate: split out merge state handling code from main merge module
Augie Fackler <augie@google.com>
parents:
42456
diff
changeset
|
91 > wraprecordupdates) |
22406
2e47e461d2ca
dirstate: add test for exceptions during updates
Durham Goode <durham@fb.com>
parents:
19092
diff
changeset
|
92 > EOF |
2e47e461d2ca
dirstate: add test for exceptions during updates
Durham Goode <durham@fb.com>
parents:
19092
diff
changeset
|
93 |
2e47e461d2ca
dirstate: add test for exceptions during updates
Durham Goode <durham@fb.com>
parents:
19092
diff
changeset
|
94 $ hg rm a |
2e47e461d2ca
dirstate: add test for exceptions during updates
Durham Goode <durham@fb.com>
parents:
19092
diff
changeset
|
95 $ hg commit -m 'rm a' |
2e47e461d2ca
dirstate: add test for exceptions during updates
Durham Goode <durham@fb.com>
parents:
19092
diff
changeset
|
96 $ echo "[extensions]" >> .hg/hgrc |
2e47e461d2ca
dirstate: add test for exceptions during updates
Durham Goode <durham@fb.com>
parents:
19092
diff
changeset
|
97 $ echo "dirstateex=../dirstateexception.py" >> .hg/hgrc |
2e47e461d2ca
dirstate: add test for exceptions during updates
Durham Goode <durham@fb.com>
parents:
19092
diff
changeset
|
98 $ hg up 0 |
2e47e461d2ca
dirstate: add test for exceptions during updates
Durham Goode <durham@fb.com>
parents:
19092
diff
changeset
|
99 abort: simulated error while recording dirstateupdates |
2e47e461d2ca
dirstate: add test for exceptions during updates
Durham Goode <durham@fb.com>
parents:
19092
diff
changeset
|
100 [255] |
2e47e461d2ca
dirstate: add test for exceptions during updates
Durham Goode <durham@fb.com>
parents:
19092
diff
changeset
|
101 $ hg log -r . -T '{rev}\n' |
2e47e461d2ca
dirstate: add test for exceptions during updates
Durham Goode <durham@fb.com>
parents:
19092
diff
changeset
|
102 1 |
2e47e461d2ca
dirstate: add test for exceptions during updates
Durham Goode <durham@fb.com>
parents:
19092
diff
changeset
|
103 $ hg status |
2e47e461d2ca
dirstate: add test for exceptions during updates
Durham Goode <durham@fb.com>
parents:
19092
diff
changeset
|
104 ? a |
48741
46d12f7762e4
dirstate-v2: fix infinite loop in pure packer
Raphaël Gomès <rgomes@octobus.net>
parents:
48674
diff
changeset
|
105 |
46d12f7762e4
dirstate-v2: fix infinite loop in pure packer
Raphaël Gomès <rgomes@octobus.net>
parents:
48674
diff
changeset
|
106 #if dirstate-v2 |
46d12f7762e4
dirstate-v2: fix infinite loop in pure packer
Raphaël Gomès <rgomes@octobus.net>
parents:
48674
diff
changeset
|
107 Check that folders that are prefixes of others do not throw the packer into an |
46d12f7762e4
dirstate-v2: fix infinite loop in pure packer
Raphaël Gomès <rgomes@octobus.net>
parents:
48674
diff
changeset
|
108 infinite loop. |
46d12f7762e4
dirstate-v2: fix infinite loop in pure packer
Raphaël Gomès <rgomes@octobus.net>
parents:
48674
diff
changeset
|
109 |
46d12f7762e4
dirstate-v2: fix infinite loop in pure packer
Raphaël Gomès <rgomes@octobus.net>
parents:
48674
diff
changeset
|
110 $ cd .. |
46d12f7762e4
dirstate-v2: fix infinite loop in pure packer
Raphaël Gomès <rgomes@octobus.net>
parents:
48674
diff
changeset
|
111 $ hg init infinite-loop |
46d12f7762e4
dirstate-v2: fix infinite loop in pure packer
Raphaël Gomès <rgomes@octobus.net>
parents:
48674
diff
changeset
|
112 $ cd infinite-loop |
46d12f7762e4
dirstate-v2: fix infinite loop in pure packer
Raphaël Gomès <rgomes@octobus.net>
parents:
48674
diff
changeset
|
113 $ mkdir hgext3rd hgext |
46d12f7762e4
dirstate-v2: fix infinite loop in pure packer
Raphaël Gomès <rgomes@octobus.net>
parents:
48674
diff
changeset
|
114 $ touch hgext3rd/__init__.py hgext/zeroconf.py |
46d12f7762e4
dirstate-v2: fix infinite loop in pure packer
Raphaël Gomès <rgomes@octobus.net>
parents:
48674
diff
changeset
|
115 $ hg commit -Aqm0 |
46d12f7762e4
dirstate-v2: fix infinite loop in pure packer
Raphaël Gomès <rgomes@octobus.net>
parents:
48674
diff
changeset
|
116 |
46d12f7762e4
dirstate-v2: fix infinite loop in pure packer
Raphaël Gomès <rgomes@octobus.net>
parents:
48674
diff
changeset
|
117 $ hg st -c |
46d12f7762e4
dirstate-v2: fix infinite loop in pure packer
Raphaël Gomès <rgomes@octobus.net>
parents:
48674
diff
changeset
|
118 C hgext/zeroconf.py |
46d12f7762e4
dirstate-v2: fix infinite loop in pure packer
Raphaël Gomès <rgomes@octobus.net>
parents:
48674
diff
changeset
|
119 C hgext3rd/__init__.py |
46d12f7762e4
dirstate-v2: fix infinite loop in pure packer
Raphaël Gomès <rgomes@octobus.net>
parents:
48674
diff
changeset
|
120 |
46d12f7762e4
dirstate-v2: fix infinite loop in pure packer
Raphaël Gomès <rgomes@octobus.net>
parents:
48674
diff
changeset
|
121 $ cd .. |
49150
f2ef6a4f918f
rhg: fix dirstate-v2 data file removal system
Raphaël Gomès <rgomes@octobus.net>
parents:
48773
diff
changeset
|
122 |
f2ef6a4f918f
rhg: fix dirstate-v2 data file removal system
Raphaël Gomès <rgomes@octobus.net>
parents:
48773
diff
changeset
|
123 Check that the old dirstate data file is removed correctly and the new one is |
f2ef6a4f918f
rhg: fix dirstate-v2 data file removal system
Raphaël Gomès <rgomes@octobus.net>
parents:
48773
diff
changeset
|
124 valid. |
f2ef6a4f918f
rhg: fix dirstate-v2 data file removal system
Raphaël Gomès <rgomes@octobus.net>
parents:
48773
diff
changeset
|
125 |
f2ef6a4f918f
rhg: fix dirstate-v2 data file removal system
Raphaël Gomès <rgomes@octobus.net>
parents:
48773
diff
changeset
|
126 $ dirstate_data_files () { |
f2ef6a4f918f
rhg: fix dirstate-v2 data file removal system
Raphaël Gomès <rgomes@octobus.net>
parents:
48773
diff
changeset
|
127 > find .hg -maxdepth 1 -name "dirstate.*" |
f2ef6a4f918f
rhg: fix dirstate-v2 data file removal system
Raphaël Gomès <rgomes@octobus.net>
parents:
48773
diff
changeset
|
128 > } |
f2ef6a4f918f
rhg: fix dirstate-v2 data file removal system
Raphaël Gomès <rgomes@octobus.net>
parents:
48773
diff
changeset
|
129 |
f2ef6a4f918f
rhg: fix dirstate-v2 data file removal system
Raphaël Gomès <rgomes@octobus.net>
parents:
48773
diff
changeset
|
130 $ find_dirstate_uuid () { |
49154
51262af89efe
test-dirstate: use new `--docket` flag to get the data uuid
Raphaël Gomès <rgomes@octobus.net>
parents:
49150
diff
changeset
|
131 > hg debugstate --docket | grep uuid | sed 's/.*uuid: \(.*\)/\1/' |
49150
f2ef6a4f918f
rhg: fix dirstate-v2 data file removal system
Raphaël Gomès <rgomes@octobus.net>
parents:
48773
diff
changeset
|
132 > } |
f2ef6a4f918f
rhg: fix dirstate-v2 data file removal system
Raphaël Gomès <rgomes@octobus.net>
parents:
48773
diff
changeset
|
133 |
49201
c29e79d11b01
test-dirstate: actually test the append code path in dirstate v2
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
49158
diff
changeset
|
134 $ find_dirstate_data_size () { |
c29e79d11b01
test-dirstate: actually test the append code path in dirstate v2
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
49158
diff
changeset
|
135 > hg debugstate --docket | grep 'size of dirstate data' | sed 's/.*size of dirstate data: \(.*\)/\1/' |
c29e79d11b01
test-dirstate: actually test the append code path in dirstate v2
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
49158
diff
changeset
|
136 > } |
c29e79d11b01
test-dirstate: actually test the append code path in dirstate v2
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
49158
diff
changeset
|
137 |
49150
f2ef6a4f918f
rhg: fix dirstate-v2 data file removal system
Raphaël Gomès <rgomes@octobus.net>
parents:
48773
diff
changeset
|
138 $ dirstate_uuid_has_not_changed () { |
49157
5d610521a285
test-dirstate: fix detection of Rust environment variable
Raphaël Gomès <rgomes@octobus.net>
parents:
49156
diff
changeset
|
139 > # Non-Rust always rewrites the whole dirstate |
5d610521a285
test-dirstate: fix detection of Rust environment variable
Raphaël Gomès <rgomes@octobus.net>
parents:
49156
diff
changeset
|
140 > if [ $# -eq 1 ] || ([ -n "$HGMODULEPOLICY" ] && [ -z "${HGMODULEPOLICY##*rust*}" ]) || [ -n "$RHG_INSTALLED_AS_HG" ]; then |
49150
f2ef6a4f918f
rhg: fix dirstate-v2 data file removal system
Raphaël Gomès <rgomes@octobus.net>
parents:
48773
diff
changeset
|
141 > test $current_uid = $(find_dirstate_uuid) |
49158
682b0ac92c0b
test-dirstate: print something when the check is skipped
Raphaël Gomès <rgomes@octobus.net>
parents:
49157
diff
changeset
|
142 > else |
682b0ac92c0b
test-dirstate: print something when the check is skipped
Raphaël Gomès <rgomes@octobus.net>
parents:
49157
diff
changeset
|
143 > echo "not testing because using Python implementation" |
49150
f2ef6a4f918f
rhg: fix dirstate-v2 data file removal system
Raphaël Gomès <rgomes@octobus.net>
parents:
48773
diff
changeset
|
144 > fi |
f2ef6a4f918f
rhg: fix dirstate-v2 data file removal system
Raphaël Gomès <rgomes@octobus.net>
parents:
48773
diff
changeset
|
145 > } |
f2ef6a4f918f
rhg: fix dirstate-v2 data file removal system
Raphaël Gomès <rgomes@octobus.net>
parents:
48773
diff
changeset
|
146 |
f2ef6a4f918f
rhg: fix dirstate-v2 data file removal system
Raphaël Gomès <rgomes@octobus.net>
parents:
48773
diff
changeset
|
147 $ cd .. |
f2ef6a4f918f
rhg: fix dirstate-v2 data file removal system
Raphaël Gomès <rgomes@octobus.net>
parents:
48773
diff
changeset
|
148 $ hg init append-mostly |
f2ef6a4f918f
rhg: fix dirstate-v2 data file removal system
Raphaël Gomès <rgomes@octobus.net>
parents:
48773
diff
changeset
|
149 $ cd append-mostly |
f2ef6a4f918f
rhg: fix dirstate-v2 data file removal system
Raphaël Gomès <rgomes@octobus.net>
parents:
48773
diff
changeset
|
150 $ mkdir dir dir2 |
50177
964a913343a2
test-dirstate: use more robust method to trigger a data-file append
Raphaël Gomès <rgomes@octobus.net>
parents:
49550
diff
changeset
|
151 $ touch -t 200001010000 dir/a dir/b dir/c dir/d dir/e dir2/f dir dir2 |
49150
f2ef6a4f918f
rhg: fix dirstate-v2 data file removal system
Raphaël Gomès <rgomes@octobus.net>
parents:
48773
diff
changeset
|
152 $ hg commit -Aqm initial |
f2ef6a4f918f
rhg: fix dirstate-v2 data file removal system
Raphaël Gomès <rgomes@octobus.net>
parents:
48773
diff
changeset
|
153 $ hg st |
f2ef6a4f918f
rhg: fix dirstate-v2 data file removal system
Raphaël Gomès <rgomes@octobus.net>
parents:
48773
diff
changeset
|
154 $ dirstate_data_files | wc -l |
f2ef6a4f918f
rhg: fix dirstate-v2 data file removal system
Raphaël Gomès <rgomes@octobus.net>
parents:
48773
diff
changeset
|
155 *1 (re) |
f2ef6a4f918f
rhg: fix dirstate-v2 data file removal system
Raphaël Gomès <rgomes@octobus.net>
parents:
48773
diff
changeset
|
156 $ current_uid=$(find_dirstate_uuid) |
f2ef6a4f918f
rhg: fix dirstate-v2 data file removal system
Raphaël Gomès <rgomes@octobus.net>
parents:
48773
diff
changeset
|
157 |
f2ef6a4f918f
rhg: fix dirstate-v2 data file removal system
Raphaël Gomès <rgomes@octobus.net>
parents:
48773
diff
changeset
|
158 Nothing changes here |
f2ef6a4f918f
rhg: fix dirstate-v2 data file removal system
Raphaël Gomès <rgomes@octobus.net>
parents:
48773
diff
changeset
|
159 |
f2ef6a4f918f
rhg: fix dirstate-v2 data file removal system
Raphaël Gomès <rgomes@octobus.net>
parents:
48773
diff
changeset
|
160 $ hg st |
f2ef6a4f918f
rhg: fix dirstate-v2 data file removal system
Raphaël Gomès <rgomes@octobus.net>
parents:
48773
diff
changeset
|
161 $ dirstate_data_files | wc -l |
f2ef6a4f918f
rhg: fix dirstate-v2 data file removal system
Raphaël Gomès <rgomes@octobus.net>
parents:
48773
diff
changeset
|
162 *1 (re) |
f2ef6a4f918f
rhg: fix dirstate-v2 data file removal system
Raphaël Gomès <rgomes@octobus.net>
parents:
48773
diff
changeset
|
163 $ dirstate_uuid_has_not_changed |
49158
682b0ac92c0b
test-dirstate: print something when the check is skipped
Raphaël Gomès <rgomes@octobus.net>
parents:
49157
diff
changeset
|
164 not testing because using Python implementation (no-rust no-rhg !) |
49150
f2ef6a4f918f
rhg: fix dirstate-v2 data file removal system
Raphaël Gomès <rgomes@octobus.net>
parents:
48773
diff
changeset
|
165 |
50177
964a913343a2
test-dirstate: use more robust method to trigger a data-file append
Raphaël Gomès <rgomes@octobus.net>
parents:
49550
diff
changeset
|
166 Trigger an append with a small change to directory mtime |
49150
f2ef6a4f918f
rhg: fix dirstate-v2 data file removal system
Raphaël Gomès <rgomes@octobus.net>
parents:
48773
diff
changeset
|
167 |
49201
c29e79d11b01
test-dirstate: actually test the append code path in dirstate v2
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
49158
diff
changeset
|
168 $ current_data_size=$(find_dirstate_data_size) |
50177
964a913343a2
test-dirstate: use more robust method to trigger a data-file append
Raphaël Gomès <rgomes@octobus.net>
parents:
49550
diff
changeset
|
169 $ touch -t 201001010000 dir2 |
49150
f2ef6a4f918f
rhg: fix dirstate-v2 data file removal system
Raphaël Gomès <rgomes@octobus.net>
parents:
48773
diff
changeset
|
170 $ hg st |
f2ef6a4f918f
rhg: fix dirstate-v2 data file removal system
Raphaël Gomès <rgomes@octobus.net>
parents:
48773
diff
changeset
|
171 $ dirstate_data_files | wc -l |
f2ef6a4f918f
rhg: fix dirstate-v2 data file removal system
Raphaël Gomès <rgomes@octobus.net>
parents:
48773
diff
changeset
|
172 *1 (re) |
f2ef6a4f918f
rhg: fix dirstate-v2 data file removal system
Raphaël Gomès <rgomes@octobus.net>
parents:
48773
diff
changeset
|
173 $ dirstate_uuid_has_not_changed |
49158
682b0ac92c0b
test-dirstate: print something when the check is skipped
Raphaël Gomès <rgomes@octobus.net>
parents:
49157
diff
changeset
|
174 not testing because using Python implementation (no-rust no-rhg !) |
49201
c29e79d11b01
test-dirstate: actually test the append code path in dirstate v2
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
49158
diff
changeset
|
175 $ new_data_size=$(find_dirstate_data_size) |
c29e79d11b01
test-dirstate: actually test the append code path in dirstate v2
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
49158
diff
changeset
|
176 $ [ "$current_data_size" -eq "$new_data_size" ]; echo $? |
c29e79d11b01
test-dirstate: actually test the append code path in dirstate v2
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
49158
diff
changeset
|
177 0 (no-rust no-rhg !) |
c29e79d11b01
test-dirstate: actually test the append code path in dirstate v2
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
49158
diff
changeset
|
178 1 (rust !) |
c29e79d11b01
test-dirstate: actually test the append code path in dirstate v2
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
49158
diff
changeset
|
179 1 (no-rust rhg !) |
49150
f2ef6a4f918f
rhg: fix dirstate-v2 data file removal system
Raphaël Gomès <rgomes@octobus.net>
parents:
48773
diff
changeset
|
180 |
49155
c69adc82e7f7
rust-dirstate-v2: show `unused_bytes` counter is not reset on total rewrite
Raphaël Gomès <rgomes@octobus.net>
parents:
49154
diff
changeset
|
181 Unused bytes counter is non-0 when appending |
c69adc82e7f7
rust-dirstate-v2: show `unused_bytes` counter is not reset on total rewrite
Raphaël Gomès <rgomes@octobus.net>
parents:
49154
diff
changeset
|
182 $ touch file |
c69adc82e7f7
rust-dirstate-v2: show `unused_bytes` counter is not reset on total rewrite
Raphaël Gomès <rgomes@octobus.net>
parents:
49154
diff
changeset
|
183 $ hg add file |
c69adc82e7f7
rust-dirstate-v2: show `unused_bytes` counter is not reset on total rewrite
Raphaël Gomès <rgomes@octobus.net>
parents:
49154
diff
changeset
|
184 $ current_uid=$(find_dirstate_uuid) |
c69adc82e7f7
rust-dirstate-v2: show `unused_bytes` counter is not reset on total rewrite
Raphaël Gomès <rgomes@octobus.net>
parents:
49154
diff
changeset
|
185 |
c69adc82e7f7
rust-dirstate-v2: show `unused_bytes` counter is not reset on total rewrite
Raphaël Gomès <rgomes@octobus.net>
parents:
49154
diff
changeset
|
186 Trigger a rust/rhg run which updates the unused bytes value |
c69adc82e7f7
rust-dirstate-v2: show `unused_bytes` counter is not reset on total rewrite
Raphaël Gomès <rgomes@octobus.net>
parents:
49154
diff
changeset
|
187 $ hg st |
c69adc82e7f7
rust-dirstate-v2: show `unused_bytes` counter is not reset on total rewrite
Raphaël Gomès <rgomes@octobus.net>
parents:
49154
diff
changeset
|
188 A file |
c69adc82e7f7
rust-dirstate-v2: show `unused_bytes` counter is not reset on total rewrite
Raphaël Gomès <rgomes@octobus.net>
parents:
49154
diff
changeset
|
189 $ dirstate_data_files | wc -l |
c69adc82e7f7
rust-dirstate-v2: show `unused_bytes` counter is not reset on total rewrite
Raphaël Gomès <rgomes@octobus.net>
parents:
49154
diff
changeset
|
190 *1 (re) |
c69adc82e7f7
rust-dirstate-v2: show `unused_bytes` counter is not reset on total rewrite
Raphaël Gomès <rgomes@octobus.net>
parents:
49154
diff
changeset
|
191 $ dirstate_uuid_has_not_changed |
49158
682b0ac92c0b
test-dirstate: print something when the check is skipped
Raphaël Gomès <rgomes@octobus.net>
parents:
49157
diff
changeset
|
192 not testing because using Python implementation (no-rust no-rhg !) |
49155
c69adc82e7f7
rust-dirstate-v2: show `unused_bytes` counter is not reset on total rewrite
Raphaël Gomès <rgomes@octobus.net>
parents:
49154
diff
changeset
|
193 |
c69adc82e7f7
rust-dirstate-v2: show `unused_bytes` counter is not reset on total rewrite
Raphaël Gomès <rgomes@octobus.net>
parents:
49154
diff
changeset
|
194 $ hg debugstate --docket | grep unused |
c69adc82e7f7
rust-dirstate-v2: show `unused_bytes` counter is not reset on total rewrite
Raphaël Gomès <rgomes@octobus.net>
parents:
49154
diff
changeset
|
195 number of unused bytes: 0 (no-rust no-rhg !) |
c69adc82e7f7
rust-dirstate-v2: show `unused_bytes` counter is not reset on total rewrite
Raphaël Gomès <rgomes@octobus.net>
parents:
49154
diff
changeset
|
196 number of unused bytes: [1-9]\d* (re) (rhg no-rust !) |
c69adc82e7f7
rust-dirstate-v2: show `unused_bytes` counter is not reset on total rewrite
Raphaël Gomès <rgomes@octobus.net>
parents:
49154
diff
changeset
|
197 number of unused bytes: [1-9]\d* (re) (rust no-rhg !) |
c69adc82e7f7
rust-dirstate-v2: show `unused_bytes` counter is not reset on total rewrite
Raphaël Gomès <rgomes@octobus.net>
parents:
49154
diff
changeset
|
198 number of unused bytes: [1-9]\d* (re) (rust rhg !) |
c69adc82e7f7
rust-dirstate-v2: show `unused_bytes` counter is not reset on total rewrite
Raphaël Gomès <rgomes@octobus.net>
parents:
49154
diff
changeset
|
199 |
49150
f2ef6a4f918f
rhg: fix dirstate-v2 data file removal system
Raphaël Gomès <rgomes@octobus.net>
parents:
48773
diff
changeset
|
200 Delete most of the dirstate to trigger a non-append |
f2ef6a4f918f
rhg: fix dirstate-v2 data file removal system
Raphaël Gomès <rgomes@octobus.net>
parents:
48773
diff
changeset
|
201 $ hg rm dir/a dir/b dir/c dir/d |
f2ef6a4f918f
rhg: fix dirstate-v2 data file removal system
Raphaël Gomès <rgomes@octobus.net>
parents:
48773
diff
changeset
|
202 $ dirstate_data_files | wc -l |
f2ef6a4f918f
rhg: fix dirstate-v2 data file removal system
Raphaël Gomès <rgomes@octobus.net>
parents:
48773
diff
changeset
|
203 *1 (re) |
f2ef6a4f918f
rhg: fix dirstate-v2 data file removal system
Raphaël Gomès <rgomes@octobus.net>
parents:
48773
diff
changeset
|
204 $ dirstate_uuid_has_not_changed also-if-python |
f2ef6a4f918f
rhg: fix dirstate-v2 data file removal system
Raphaël Gomès <rgomes@octobus.net>
parents:
48773
diff
changeset
|
205 [1] |
f2ef6a4f918f
rhg: fix dirstate-v2 data file removal system
Raphaël Gomès <rgomes@octobus.net>
parents:
48773
diff
changeset
|
206 |
49155
c69adc82e7f7
rust-dirstate-v2: show `unused_bytes` counter is not reset on total rewrite
Raphaël Gomès <rgomes@octobus.net>
parents:
49154
diff
changeset
|
207 Check that unused bytes counter is reset when creating a new docket |
c69adc82e7f7
rust-dirstate-v2: show `unused_bytes` counter is not reset on total rewrite
Raphaël Gomès <rgomes@octobus.net>
parents:
49154
diff
changeset
|
208 |
c69adc82e7f7
rust-dirstate-v2: show `unused_bytes` counter is not reset on total rewrite
Raphaël Gomès <rgomes@octobus.net>
parents:
49154
diff
changeset
|
209 $ hg debugstate --docket | grep unused |
49156
09984dc70352
rust-dirstate-v2: fix the unused bytes counter when rewriting the dirstate
Raphaël Gomès <rgomes@octobus.net>
parents:
49155
diff
changeset
|
210 number of unused bytes: 0 |
49155
c69adc82e7f7
rust-dirstate-v2: show `unused_bytes` counter is not reset on total rewrite
Raphaël Gomès <rgomes@octobus.net>
parents:
49154
diff
changeset
|
211 |
c69adc82e7f7
rust-dirstate-v2: show `unused_bytes` counter is not reset on total rewrite
Raphaël Gomès <rgomes@octobus.net>
parents:
49154
diff
changeset
|
212 #endif |
c69adc82e7f7
rust-dirstate-v2: show `unused_bytes` counter is not reset on total rewrite
Raphaël Gomès <rgomes@octobus.net>
parents:
49154
diff
changeset
|
213 |
50222
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
214 (non-Rust always rewrites) |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
215 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
216 Test the devel option to control write behavior |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
217 ============================================== |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
218 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
219 Sometimes, debugging or testing the dirstate requires making sure that we have |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
220 done a complete rewrite of the data file and have no unreachable data around, |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
221 sometimes it requires we ensure we don't. |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
222 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
223 We test the option to force this rewrite by creating the situation where an |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
224 append would happen and check that it doesn't happen. |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
225 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
226 $ cd .. |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
227 $ hg init force-base |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
228 $ cd force-base |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
229 $ mkdir -p dir/nested dir2 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
230 $ touch -t 200001010000 f dir/nested/a dir/b dir/c dir/d dir2/e dir/nested dir dir2 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
231 $ hg commit -Aqm "recreate a bunch of files to facilitate append" |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
232 $ hg st --config devel.dirstate.v2.data_update_mode=force-new |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
233 $ cd .. |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
234 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
235 #if dirstate-v2 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
236 $ hg -R force-base debugstate --docket | grep unused |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
237 number of unused bytes: 0 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
238 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
239 Check with the option in "auto" mode |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
240 ------------------------------------ |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
241 $ cp -a force-base append-mostly-no-force-rewrite |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
242 $ cd append-mostly-no-force-rewrite |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
243 $ current_uid=$(find_dirstate_uuid) |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
244 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
245 Change mtime of dir on disk which will be recorded, causing a small enough change |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
246 to warrant only an append |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
247 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
248 $ touch -t 202212010000 dir2 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
249 $ hg st \ |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
250 > --config rhg.on-unsupported=abort \ |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
251 > --config devel.dirstate.v2.data_update_mode=auto |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
252 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
253 UUID hasn't changed and a non-zero number of unused bytes means we've appended |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
254 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
255 $ dirstate_uuid_has_not_changed |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
256 not testing because using Python implementation (no-rust no-rhg !) |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
257 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
258 #if no-rust no-rhg |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
259 The pure python implementation never appends at the time this is written. |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
260 $ hg debugstate --docket | grep unused |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
261 number of unused bytes: 0 (known-bad-output !) |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
262 #else |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
263 $ hg debugstate --docket | grep unused |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
264 number of unused bytes: [1-9]\d* (re) |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
265 #endif |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
266 $ cd .. |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
267 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
268 Check the same scenario with the option set to "force-new" |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
269 --------------------------------------------------------- |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
270 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
271 $ cp -a force-base append-mostly-force-rewrite |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
272 $ cd append-mostly-force-rewrite |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
273 $ current_uid=$(find_dirstate_uuid) |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
274 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
275 Change mtime of dir on disk which will be recorded, causing a small enough change |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
276 to warrant only an append, but we force the rewrite |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
277 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
278 $ touch -t 202212010000 dir2 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
279 $ hg st \ |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
280 > --config rhg.on-unsupported=abort \ |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
281 > --config devel.dirstate.v2.data_update_mode=force-new |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
282 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
283 UUID has changed and zero unused bytes means a full-rewrite happened |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
284 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
285 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
286 #if no-rust no-rhg |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
287 $ dirstate_uuid_has_not_changed |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
288 not testing because using Python implementation |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
289 #else |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
290 $ dirstate_uuid_has_not_changed |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
291 [1] |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
292 #endif |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
293 $ hg debugstate --docket | grep unused |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
294 number of unused bytes: 0 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
295 $ cd .. |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
296 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
297 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
298 Check the same scenario with the option set to "force-append" |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
299 ------------------------------------------------------------- |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
300 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
301 (should behave the same as "auto" here) |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
302 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
303 $ cp -a force-base append-mostly-force-append |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
304 $ cd append-mostly-force-append |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
305 $ current_uid=$(find_dirstate_uuid) |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
306 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
307 Change mtime of dir on disk which will be recorded, causing a small enough change |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
308 to warrant only an append, which we are forcing here anyway. |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
309 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
310 $ touch -t 202212010000 dir2 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
311 $ hg st \ |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
312 > --config rhg.on-unsupported=abort \ |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
313 > --config devel.dirstate.v2.data_update_mode=force-append |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
314 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
315 UUID has not changed and some unused bytes exist in the data file |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
316 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
317 $ dirstate_uuid_has_not_changed |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
318 not testing because using Python implementation (no-rust no-rhg !) |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
319 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
320 #if no-rust no-rhg |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
321 The pure python implementation never appends at the time this is written. |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
322 $ hg debugstate --docket | grep unused |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
323 number of unused bytes: 0 (known-bad-output !) |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
324 #else |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
325 $ hg debugstate --docket | grep unused |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
326 number of unused bytes: [1-9]\d* (re) |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
327 #endif |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
328 $ cd .. |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
329 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
330 Check with the option in "auto" mode |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
331 ------------------------------------ |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
332 $ cp -a force-base append-mostly-no-force-rewrite |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
333 $ cd append-mostly-no-force-rewrite |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
334 $ current_uid=$(find_dirstate_uuid) |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
335 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
336 Change mtime of everything on disk causing a full rewrite |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
337 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
338 $ touch -t 202212010005 `hg files` |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
339 $ hg st \ |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
340 > --config rhg.on-unsupported=abort \ |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
341 > --config devel.dirstate.v2.data_update_mode=auto |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
342 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
343 UUID has changed and zero unused bytes means we've rewritten. |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
344 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
345 #if no-rust no-rhg |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
346 $ dirstate_uuid_has_not_changed |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
347 not testing because using Python implementation |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
348 #else |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
349 $ dirstate_uuid_has_not_changed |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
350 [1] |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
351 #endif |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
352 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
353 $ hg debugstate --docket | grep unused |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
354 number of unused bytes: 0 (known-bad-output !) |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
355 $ cd .. |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
356 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
357 Check the same scenario with the option set to "force-new" |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
358 --------------------------------------------------------- |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
359 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
360 (should be the same as auto) |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
361 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
362 $ cp -a force-base append-mostly-force-rewrite |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
363 $ cd append-mostly-force-rewrite |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
364 $ current_uid=$(find_dirstate_uuid) |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
365 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
366 Change mtime of everything on disk causing a full rewrite |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
367 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
368 $ touch -t 202212010005 `hg files` |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
369 $ hg st \ |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
370 > --config rhg.on-unsupported=abort \ |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
371 > --config devel.dirstate.v2.data_update_mode=force-new |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
372 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
373 UUID has changed and a zero number unused bytes means we've rewritten. |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
374 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
375 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
376 #if no-rust no-rhg |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
377 $ dirstate_uuid_has_not_changed |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
378 not testing because using Python implementation |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
379 #else |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
380 $ dirstate_uuid_has_not_changed |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
381 [1] |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
382 #endif |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
383 $ hg debugstate --docket | grep unused |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
384 number of unused bytes: 0 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
385 $ cd .. |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
386 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
387 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
388 Check the same scenario with the option set to "force-append" |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
389 ------------------------------------------------------------- |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
390 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
391 Should append even if "auto" did not |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
392 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
393 $ cp -a force-base append-mostly-force-append |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
394 $ cd append-mostly-force-append |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
395 $ current_uid=$(find_dirstate_uuid) |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
396 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
397 Change mtime of everything on disk causing a full rewrite |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
398 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
399 $ touch -t 202212010005 `hg files` |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
400 $ hg st \ |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
401 > --config rhg.on-unsupported=abort \ |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
402 > --config devel.dirstate.v2.data_update_mode=force-append |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
403 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
404 UUID has not changed and some unused bytes exist in the data file |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
405 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
406 $ dirstate_uuid_has_not_changed |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
407 not testing because using Python implementation (no-rust no-rhg !) |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
408 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
409 #if no-rust no-rhg |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
410 The pure python implementation is never appending at the time this is written. |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
411 $ hg debugstate --docket | grep unused |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
412 number of unused bytes: 0 (known-bad-output !) |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
413 #else |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
414 $ hg debugstate --docket | grep unused |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
415 number of unused bytes: [1-9]\d* (re) |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
416 #endif |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
417 $ cd .. |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
418 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
419 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
420 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
421 Get back into a state suitable for the test of the file. |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
422 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
423 $ cd ./append-mostly |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
424 |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
425 #else |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
426 $ cd ./u |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
427 #endif |
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
428 |
49466
486b8a383100
dirstate-v2: display a possible issue with transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49465
diff
changeset
|
429 Transaction compatibility |
50222
ecd28d89c29e
dirstate-v2: add devel config option to control write behavior
Raphaël Gomès <rgomes@octobus.net>
parents:
50177
diff
changeset
|
430 ========================= |
49466
486b8a383100
dirstate-v2: display a possible issue with transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49465
diff
changeset
|
431 |
486b8a383100
dirstate-v2: display a possible issue with transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49465
diff
changeset
|
432 The transaction preserves the dirstate. |
486b8a383100
dirstate-v2: display a possible issue with transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49465
diff
changeset
|
433 We should make sure all of it (docket + data) is preserved |
486b8a383100
dirstate-v2: display a possible issue with transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49465
diff
changeset
|
434 |
486b8a383100
dirstate-v2: display a possible issue with transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49465
diff
changeset
|
435 #if dirstate-v2 |
486b8a383100
dirstate-v2: display a possible issue with transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49465
diff
changeset
|
436 $ hg commit -m 'bli' |
486b8a383100
dirstate-v2: display a possible issue with transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49465
diff
changeset
|
437 #endif |
486b8a383100
dirstate-v2: display a possible issue with transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49465
diff
changeset
|
438 |
486b8a383100
dirstate-v2: display a possible issue with transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49465
diff
changeset
|
439 $ hg update --quiet |
486b8a383100
dirstate-v2: display a possible issue with transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49465
diff
changeset
|
440 $ hg revert --all --quiet |
486b8a383100
dirstate-v2: display a possible issue with transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49465
diff
changeset
|
441 $ rm -f a |
486b8a383100
dirstate-v2: display a possible issue with transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49465
diff
changeset
|
442 $ echo foo > foo |
486b8a383100
dirstate-v2: display a possible issue with transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49465
diff
changeset
|
443 $ hg add foo |
486b8a383100
dirstate-v2: display a possible issue with transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49465
diff
changeset
|
444 $ hg commit -m foo |
486b8a383100
dirstate-v2: display a possible issue with transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49465
diff
changeset
|
445 |
486b8a383100
dirstate-v2: display a possible issue with transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49465
diff
changeset
|
446 #if dirstate-v2 |
486b8a383100
dirstate-v2: display a possible issue with transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49465
diff
changeset
|
447 $ uid=$(find_dirstate_uuid) |
486b8a383100
dirstate-v2: display a possible issue with transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49465
diff
changeset
|
448 $ touch bar |
486b8a383100
dirstate-v2: display a possible issue with transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49465
diff
changeset
|
449 $ while [ uid = $(find_dirstate_uuid) ]; do |
486b8a383100
dirstate-v2: display a possible issue with transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49465
diff
changeset
|
450 > hg add bar; |
486b8a383100
dirstate-v2: display a possible issue with transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49465
diff
changeset
|
451 > hg remove bar; |
486b8a383100
dirstate-v2: display a possible issue with transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49465
diff
changeset
|
452 > done; |
486b8a383100
dirstate-v2: display a possible issue with transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49465
diff
changeset
|
453 $ rm bar |
486b8a383100
dirstate-v2: display a possible issue with transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49465
diff
changeset
|
454 #endif |
486b8a383100
dirstate-v2: display a possible issue with transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49465
diff
changeset
|
455 $ hg rollback |
486b8a383100
dirstate-v2: display a possible issue with transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49465
diff
changeset
|
456 repository tip rolled back to revision 1 (undo commit) |
486b8a383100
dirstate-v2: display a possible issue with transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49465
diff
changeset
|
457 working directory now based on revision 1 |
486b8a383100
dirstate-v2: display a possible issue with transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49465
diff
changeset
|
458 |
486b8a383100
dirstate-v2: display a possible issue with transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49465
diff
changeset
|
459 $ hg status |
486b8a383100
dirstate-v2: display a possible issue with transaction
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49465
diff
changeset
|
460 A foo |
49549
e255a5355971
dirstate-v2: highlight a bug when Python-packed but used in `rhg`
Raphaël Gomès <rgomes@octobus.net>
parents:
49467
diff
changeset
|
461 $ cd .. |
e255a5355971
dirstate-v2: highlight a bug when Python-packed but used in `rhg`
Raphaël Gomès <rgomes@octobus.net>
parents:
49467
diff
changeset
|
462 |
e255a5355971
dirstate-v2: highlight a bug when Python-packed but used in `rhg`
Raphaël Gomès <rgomes@octobus.net>
parents:
49467
diff
changeset
|
463 Check dirstate ordering |
e255a5355971
dirstate-v2: highlight a bug when Python-packed but used in `rhg`
Raphaël Gomès <rgomes@octobus.net>
parents:
49467
diff
changeset
|
464 (e.g. `src/dirstate/` and `src/dirstate.rs` shouldn't cause issues) |
e255a5355971
dirstate-v2: highlight a bug when Python-packed but used in `rhg`
Raphaël Gomès <rgomes@octobus.net>
parents:
49467
diff
changeset
|
465 |
e255a5355971
dirstate-v2: highlight a bug when Python-packed but used in `rhg`
Raphaël Gomès <rgomes@octobus.net>
parents:
49467
diff
changeset
|
466 $ hg init repro |
e255a5355971
dirstate-v2: highlight a bug when Python-packed but used in `rhg`
Raphaël Gomès <rgomes@octobus.net>
parents:
49467
diff
changeset
|
467 $ cd repro |
e255a5355971
dirstate-v2: highlight a bug when Python-packed but used in `rhg`
Raphaël Gomès <rgomes@octobus.net>
parents:
49467
diff
changeset
|
468 $ mkdir src |
e255a5355971
dirstate-v2: highlight a bug when Python-packed but used in `rhg`
Raphaël Gomès <rgomes@octobus.net>
parents:
49467
diff
changeset
|
469 $ mkdir src/dirstate |
e255a5355971
dirstate-v2: highlight a bug when Python-packed but used in `rhg`
Raphaël Gomès <rgomes@octobus.net>
parents:
49467
diff
changeset
|
470 $ touch src/dirstate/file1 src/dirstate/file2 src/dirstate.rs |
e255a5355971
dirstate-v2: highlight a bug when Python-packed but used in `rhg`
Raphaël Gomès <rgomes@octobus.net>
parents:
49467
diff
changeset
|
471 $ touch file1 file2 |
e255a5355971
dirstate-v2: highlight a bug when Python-packed but used in `rhg`
Raphaël Gomès <rgomes@octobus.net>
parents:
49467
diff
changeset
|
472 $ hg commit -Aqm1 |
e255a5355971
dirstate-v2: highlight a bug when Python-packed but used in `rhg`
Raphaël Gomès <rgomes@octobus.net>
parents:
49467
diff
changeset
|
473 $ hg st |
e255a5355971
dirstate-v2: highlight a bug when Python-packed but used in `rhg`
Raphaël Gomès <rgomes@octobus.net>
parents:
49467
diff
changeset
|
474 $ cd .. |