mirror of
https://github.com/facebook/sapling.git
synced 2024-10-16 19:57:18 +03:00
a185a85cf2
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
61 lines
1.7 KiB
Perl
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
|