##// END OF EJS Templates
dirstate-tracked-key: update the config value to match latest discussion...
dirstate-tracked-key: update the config value to match latest discussion Special cases are not special enough, we align the option name on the other. The `version` value is undocumented for now as it can only have a single value. It is supported in the code to properly detect and abort if more value are introduced in the future value. Differential Revision: https://phab.mercurial-scm.org/D12184

File last commit:

r49620:fd9f2205 default
r49623:79a96712 default
Show More
test-status-tracked-key.t
163 lines | 3.4 KiB | text/troff | Tads3Lexer
/ tests / test-status-tracked-key.t
==============================
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]
> dirstate-tracked-key=yes
> 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