sapling/tests/test-sparse-extensions.t
Jun Wu a185a85cf2 fsmonitor: track ignored files for treestate
Summary:
Since we can now skip a large ignored directory efficiently, just track the
ignored files in treestate. This fixes the "unignore" correctness issue that
has been there for years.

It also makes it easier to implement a faster version of "status -i" or "purge
--all". But that needs some extra changes.

It looks fine for fbsource sparse profiles. But we don't control all the
possible sparse configs out there. It's possible for certain users to have
sparse configs that cannot be optimized efficiently and their hg performance
will degrade. To reduce risk, a config option is added so we can slowroll the
feature and collect feedback.

Reviewed By: DurhamG

Differential Revision: D10352851

fbshipit-source-id: fbcb8445d87a50826852b832bbb0559ab199192f
2018-10-19 19:37:16 -07:00

61 lines
1.7 KiB
Perl

test sparse interaction with other extensions
$ hg init myrepo
$ cd myrepo
$ cat > .hg/hgrc <<EOF
> [extensions]
> sparse=$TESTDIR/../hgext/sparse.py
> strip=
> # Remove once default-on:
> simplecache=
> [simplecache]
> showdebug=true
> cachedir=$TESTTMP/hgsimplecache
> EOF
Test integration with simplecache for profile reads
$ $PYTHON -c 'import hgext.simplecache' || exit 80
$ printf "[include]\nfoo\n" > .hgsparse
$ hg add .hgsparse
$ hg commit -qm 'Add profile'
$ hg sparse --enable-profile .hgsparse
$ hg status --debug
got value for key sparseprofile:.hgsparse:52fe6c0958d7d08df53bdf7ee62a261abb7f599e:v1 from local
got value for key sparseprofile:.hgsparse:52fe6c0958d7d08df53bdf7ee62a261abb7f599e:v1 from local
#if fsmonitor
Test fsmonitor integration (if available)
TODO: make fully isolated integration test a'la https://github.com/facebook/watchman/blob/master/tests/integration/WatchmanInstance.py
(this one is using the systemwide watchman instance)
$ touch .watchmanconfig
$ echo "ignoredir1/" >> .hgignore
$ hg commit -Am ignoredir1
adding .hgignore
$ echo "ignoredir2/" >> .hgignore
$ hg commit -m ignoredir2
$ hg sparse reset
$ hg sparse -I ignoredir1 -I ignoredir2 -I dir1
$ mkdir ignoredir1 ignoredir2 dir1
$ touch ignoredir1/file ignoredir2/file dir1/file
Run status twice to compensate for a condition in fsmonitor where it will check
ignored files the second time it runs, regardless of previous state (ask @sid0)
$ hg status
? dir1/file
$ hg status
? dir1/file
Test that fsmonitor ignore hash check updates when .hgignore changes
$ hg up -q ".^"
$ hg status
? dir1/file
? ignoredir2/file
#endif