Mercurial > hg
view tests/test-status-tracked-key.t @ 48693:de3ac3d2c60b
stream-clone: allow to change persistent-nodemap format during stream clone
Persistent nodemap affect the store format. However it is fairly isolated and
fast to generate locally. So not making it a fixed part of the stream clone is
useful.
This allow clients without persistent-nodemap support (default for client
without Rust enabled, or simply older client). So it make it possible to enable
persistent nodemap on client, where it can provide a massive boost. without too
much consequence.
To do so, we stop using it in the advertisement requirements for streaming and
let the client add/remove the necessary file depending of its configuration.
We still send the files as it seems like a small save to not regenerate them.
In addition, the way we match them will overlap with the changelog-v2/revlog-v2
so we can't simply skip the associated patterns.
Differential Revision: https://phab.mercurial-scm.org/D12096
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Thu, 27 Jan 2022 22:24:11 +0100 |
parents | 568f63b5a30f |
children | 79a967128055 |
line wrap: on
line source
============================== Test the "tracked key" feature ============================== The tracked key feature provide a file that get updated when the set of tracked files get updated. basic setup $ cat << EOF >> $HGRCPATH > [format] > exp-dirstate-tracked-key-version=1 > EOF $ hg init tracked-key-test $ cd tracked-key-test $ hg debugbuilddag '.+10' -n $ hg log -G -T '{rev} {desc} {files}\n' o 10 r10 nf10 | o 9 r9 nf9 | o 8 r8 nf8 | o 7 r7 nf7 | o 6 r6 nf6 | o 5 r5 nf5 | o 4 r4 nf4 | o 3 r3 nf3 | o 2 r2 nf2 | o 1 r1 nf1 | o 0 r0 nf0 $ hg up tip 11 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg files nf0 nf1 nf10 nf2 nf3 nf4 nf5 nf6 nf7 nf8 nf9 key-file exists ----------- The tracked key file should exist $ ls -1 .hg/dirstate* .hg/dirstate .hg/dirstate-tracked-key key-file stay the same if the tracked set is unchanged ------------------------------------------------------ (copy its content for later comparison) $ cp .hg/dirstate-tracked-key ../key-bck $ echo foo >> nf0 $ sleep 1 $ hg status M nf0 $ diff --brief .hg/dirstate-tracked-key ../key-bck $ hg revert -C nf0 $ sleep 1 $ hg status $ diff --brief .hg/dirstate-tracked-key ../key-bck key-file change if the tracked set is changed manually ------------------------------------------------------ adding a file to tracking $ cp .hg/dirstate-tracked-key ../key-bck $ echo x > x $ hg add x $ diff --brief .hg/dirstate-tracked-key ../key-bck Files .hg/dirstate-tracked-key and ../key-bck differ [1] remove a file from tracking (forget) $ cp .hg/dirstate-tracked-key ../key-bck $ hg forget x $ diff --brief .hg/dirstate-tracked-key ../key-bck Files .hg/dirstate-tracked-key and ../key-bck differ [1] (remove) $ cp .hg/dirstate-tracked-key ../key-bck $ hg remove nf1 $ diff --brief .hg/dirstate-tracked-key ../key-bck Files .hg/dirstate-tracked-key and ../key-bck differ [1] key-file changes on revert (when applicable) -------------------------------------------- $ cp .hg/dirstate-tracked-key ../key-bck $ hg status R nf1 ? x $ hg revert --all undeleting nf1 $ hg status ? x $ diff --brief .hg/dirstate-tracked-key ../key-bck Files .hg/dirstate-tracked-key and ../key-bck differ [1] `hg update` does affect the key-file (when needed) -------------------------------------------------- update changing the tracked set (removing) $ cp .hg/dirstate-tracked-key ../key-bck $ hg status --rev . --rev '.#generations[-1]' R nf10 $ hg up '.#generations[-1]' 0 files updated, 0 files merged, 1 files removed, 0 files unresolved $ diff --brief .hg/dirstate-tracked-key ../key-bck Files .hg/dirstate-tracked-key and ../key-bck differ [1] (adding) $ cp .hg/dirstate-tracked-key ../key-bck $ hg status --rev . --rev '.#generations[1]' A nf10 $ hg up '.#generations[1]' 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ diff --brief .hg/dirstate-tracked-key ../key-bck Files .hg/dirstate-tracked-key and ../key-bck differ [1] update not affecting the tracked set $ echo foo >> nf0 $ hg commit -m foo $ cp .hg/dirstate-tracked-key ../key-bck $ hg status --rev . --rev '.#generations[-1]' M nf0 $ hg up '.#generations[-1]' 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ diff --brief .hg/dirstate-tracked-key ../key-bck