117 $ hg st -c |
117 $ hg st -c |
118 C hgext/zeroconf.py |
118 C hgext/zeroconf.py |
119 C hgext3rd/__init__.py |
119 C hgext3rd/__init__.py |
120 |
120 |
121 $ cd .. |
121 $ cd .. |
|
122 |
|
123 Check that the old dirstate data file is removed correctly and the new one is |
|
124 valid. |
|
125 |
|
126 $ dirstate_data_files () { |
|
127 > find .hg -maxdepth 1 -name "dirstate.*" |
|
128 > } |
|
129 |
|
130 $ find_dirstate_uuid () { |
|
131 > hg debugstate --docket | grep uuid | sed 's/.*uuid: \(.*\)/\1/' |
|
132 > } |
|
133 |
|
134 $ dirstate_uuid_has_not_changed () { |
|
135 > # Non-Rust always rewrites the whole dirstate |
|
136 > if [ $# -eq 1 ] || ([ -n "$HGMODULEPOLICY" ] && [ -z "${HGMODULEPOLICY##*rust*}" ]) || [ -n "$RHG_INSTALLED_AS_HG" ]; then |
|
137 > test $current_uid = $(find_dirstate_uuid) |
|
138 > else |
|
139 > echo "not testing because using Python implementation" |
|
140 > fi |
|
141 > } |
|
142 |
|
143 $ cd .. |
|
144 $ hg init append-mostly |
|
145 $ cd append-mostly |
|
146 $ mkdir dir dir2 |
|
147 $ touch dir/a dir/b dir/c dir/d dir/e dir2/f |
|
148 $ hg commit -Aqm initial |
|
149 $ hg st |
|
150 $ dirstate_data_files | wc -l |
|
151 *1 (re) |
|
152 $ current_uid=$(find_dirstate_uuid) |
|
153 |
|
154 Nothing changes here |
|
155 |
|
156 $ hg st |
|
157 $ dirstate_data_files | wc -l |
|
158 *1 (re) |
|
159 $ dirstate_uuid_has_not_changed |
|
160 not testing because using Python implementation (no-rust no-rhg !) |
|
161 |
|
162 Trigger an append with a small change |
|
163 |
|
164 $ echo "modified" > dir2/f |
|
165 $ hg st |
|
166 M dir2/f |
|
167 $ dirstate_data_files | wc -l |
|
168 *1 (re) |
|
169 $ dirstate_uuid_has_not_changed |
|
170 not testing because using Python implementation (no-rust no-rhg !) |
|
171 |
|
172 Unused bytes counter is non-0 when appending |
|
173 $ touch file |
|
174 $ hg add file |
|
175 $ current_uid=$(find_dirstate_uuid) |
|
176 |
|
177 Trigger a rust/rhg run which updates the unused bytes value |
|
178 $ hg st |
|
179 M dir2/f |
|
180 A file |
|
181 $ dirstate_data_files | wc -l |
|
182 *1 (re) |
|
183 $ dirstate_uuid_has_not_changed |
|
184 not testing because using Python implementation (no-rust no-rhg !) |
|
185 |
|
186 $ hg debugstate --docket | grep unused |
|
187 number of unused bytes: 0 (no-rust no-rhg !) |
|
188 number of unused bytes: [1-9]\d* (re) (rhg no-rust !) |
|
189 number of unused bytes: [1-9]\d* (re) (rust no-rhg !) |
|
190 number of unused bytes: [1-9]\d* (re) (rust rhg !) |
|
191 |
|
192 Delete most of the dirstate to trigger a non-append |
|
193 $ hg rm dir/a dir/b dir/c dir/d |
|
194 $ dirstate_data_files | wc -l |
|
195 *1 (re) |
|
196 $ dirstate_uuid_has_not_changed also-if-python |
|
197 [1] |
|
198 |
|
199 Check that unused bytes counter is reset when creating a new docket |
|
200 |
|
201 $ hg debugstate --docket | grep unused |
|
202 number of unused bytes: 0 |
|
203 |
122 #endif |
204 #endif |
|
205 |
|
206 $ cd .. |