Mercurial > hg
view tests/test-sparse-requirement.t @ 48042:008959fcbfb2
rust: Align DirstateEntry internals with Python/C DirstateItem
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.
Differential Revision: https://phab.mercurial-scm.org/D11484
author | Simon Sapin <simon.sapin@octobus.net> |
---|---|
date | Mon, 20 Sep 2021 19:18:21 +0200 |
parents | 40b51c28b242 |
children | bf11ff22a9af |
line wrap: on
line source
$ hg init repo $ cd repo $ touch a.html b.html c.py d.py $ cat > frontend.sparse << EOF > [include] > *.html > EOF $ hg -q commit -A -m initial $ echo 1 > a.html $ echo 1 > c.py $ hg commit -m 'commit 1' Enable sparse profile $ cat .hg/requires dotencode exp-dirstate-v2 (dirstate-v2 !) fncache generaldelta persistent-nodemap (rust !) revlog-compression-zstd (zstd !) revlogv1 sparserevlog store testonly-simplestore (reposimplestore !) $ hg debugsparse --config extensions.sparse= --enable-profile frontend.sparse $ ls -A .hg a.html b.html Requirement for sparse added when sparse is enabled $ cat .hg/requires dotencode exp-dirstate-v2 (dirstate-v2 !) exp-sparse fncache generaldelta persistent-nodemap (rust !) revlog-compression-zstd (zstd !) revlogv1 sparserevlog store testonly-simplestore (reposimplestore !) Client without sparse enabled reacts properly $ hg files abort: repository is using sparse feature but sparse is not enabled; enable the "sparse" extensions to access [255] Requirement for sparse is removed when sparse is disabled $ hg debugsparse --reset --config extensions.sparse= $ cat .hg/requires dotencode exp-dirstate-v2 (dirstate-v2 !) fncache generaldelta persistent-nodemap (rust !) revlog-compression-zstd (zstd !) revlogv1 sparserevlog store testonly-simplestore (reposimplestore !) And client without sparse can access $ hg files a.html b.html c.py d.py frontend.sparse