rust-dirstate-v2: show `unused_bytes` counter is not reset on total rewrite
This was picked up by @aalekseyev when doing unrelated debugging.
The Rust implementation was never resetting this counter, so a brand new file
would carry over the old counter.
As I write this, my counter is a supposed 7389089 unused bytes for a total of
170978 bytes in the data file. Feel free to post your own high score.
Differential Revision: https://phab.mercurial-scm.org/D12593
--- a/tests/test-dirstate.t Thu Apr 28 16:24:55 2022 +0200
+++ b/tests/test-dirstate.t Thu Apr 28 17:11:51 2022 +0200
@@ -166,6 +166,25 @@
*1 (re)
$ dirstate_uuid_has_not_changed
+Unused bytes counter is non-0 when appending
+ $ touch file
+ $ hg add file
+ $ current_uid=$(find_dirstate_uuid)
+
+Trigger a rust/rhg run which updates the unused bytes value
+ $ hg st
+ M dir2/f
+ A file
+ $ dirstate_data_files | wc -l
+ *1 (re)
+ $ dirstate_uuid_has_not_changed
+
+ $ hg debugstate --docket | grep unused
+ number of unused bytes: 0 (no-rust no-rhg !)
+ number of unused bytes: [1-9]\d* (re) (rhg no-rust !)
+ number of unused bytes: [1-9]\d* (re) (rust no-rhg !)
+ number of unused bytes: [1-9]\d* (re) (rust rhg !)
+
Delete most of the dirstate to trigger a non-append
$ hg rm dir/a dir/b dir/c dir/d
$ dirstate_data_files | wc -l
@@ -173,5 +192,12 @@
$ dirstate_uuid_has_not_changed also-if-python
[1]
+Check that unused bytes counter is reset when creating a new docket
+
+ $ hg debugstate --docket | grep unused
+ number of unused bytes: 0 (no-rust !)
+ number of unused bytes: [1-9]\d* (re) (rust known-bad-output !)
+
+#endif
+
$ cd ..
-#endif