changeset 49549:e255a5355971 stable

dirstate-v2: highlight a bug when Python-packed but used in `rhg` The Python packer creates unsorted entries in the edge case that a file starts with the same name as a sibling folder. This bug has no effect on the Python `hg status` since Python ignores directories. `rhg` assumes that all on-disk entries are sorted (which is a property of the format) including folder, hence the issue highlighted. This is also technically broken in Rust-augmented `hg status`, but it makes setting up the test more complex than necessary, since it requires the packing to be Python only (which it isn't if you have Rust extensions). Fix is in the next commit.
author Raphaël Gomès <rgomes@octobus.net>
date Wed, 26 Oct 2022 18:24:34 +0200
parents 318bdd289cf2
children fc719967efd0
files tests/test-dirstate.t
diffstat 1 files changed, 24 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/tests/test-dirstate.t	Wed Oct 26 12:20:23 2022 +0200
+++ b/tests/test-dirstate.t	Wed Oct 26 18:24:34 2022 +0200
@@ -245,3 +245,27 @@
 
   $ hg status
   A foo
+  $ cd ..
+
+Check dirstate ordering
+(e.g. `src/dirstate/` and `src/dirstate.rs` shouldn't cause issues)
+
+  $ hg init repro
+  $ cd repro
+  $ mkdir src
+  $ mkdir src/dirstate
+  $ touch src/dirstate/file1 src/dirstate/file2 src/dirstate.rs
+  $ touch file1 file2
+  $ hg commit -Aqm1
+#if rhg no-rust dirstate-v2
+  $ hg st
+  ! src/dirstate/file1 (known-bad-output !)
+  ! src/dirstate/file2 (known-bad-output !)
+  ? src/dirstate/file1 (known-bad-output !)
+  ? src/dirstate/file2 (known-bad-output !)
+  expected a value, found none (known-bad-output !)
+  [255]
+#else
+  $ hg st
+#endif
+  $ cd ..