This propagate to this Rust struct the similar change that was made recently
to the Python classe and C struct. Namely, instead of storing a four-valued
state field we now store seven (bit-packed) booleans that give lower-level
information.
Additionally, the marker values -1 and -2 for mtime and size should not
be used internally anymore. They are replaced by some combinations of booleans
For now, all uses of of DirstateEntry still use the compatibility APIs
with state and marker values. Later the Rust API for DirstateMap
will be increasingly updated to the new style.
Also change the expected result of the test_non_normal_other_parent_entries
unit test. Only a DirstateEntry with size == -2 && mtime != -1 is
affected, but this case never occurs outside of unit tests.
size == -2 was the marker value for "from other parent" entries,
where no meaningful mtime is stored.
That's my bad, I didn't check when amending the other changeset. We'll let it live inside this changeset since it doesn't matter other than being annoying.