mirror of
https://github.com/facebook/sapling.git
synced 2024-10-12 17:58:27 +03:00
3b4b3d8cbb
Summary: The current code iterates over all files in the manifest, filtering against a prefix. But a manifest supports using a matcher directly, and efficient implementations like the treemanifest will prune the tree to a much smaller subset rapidly based on the path in a matcher. Switching to using a matcher dramatically improves --cwd-list performance in fbsource, when treemanifests are available. Reviewed By: quark-zju Differential Revision: D7056650 fbshipit-source-id: 2bf62ea93680323a49c9282266118805881d7b02
53 lines
1.1 KiB
Perl
53 lines
1.1 KiB
Perl
test interaction between sparse and treemanifest (sparse file listing)
|
|
|
|
$ cat >> $HGRCPATH <<EOF
|
|
> [extensions]
|
|
> sparse=$TESTDIR/../hgext/fbsparse.py
|
|
> treemanifest=
|
|
> [treemanifest]
|
|
> treeonly = True
|
|
> [remotefilelog]
|
|
> reponame = master
|
|
> cachepath = $PWD/hgcache
|
|
> EOF
|
|
|
|
Setup the repository
|
|
|
|
$ hg init myrepo
|
|
$ cd myrepo
|
|
$ touch show
|
|
$ touch hide
|
|
$ mkdir -p subdir/foo/spam subdir/bar/ham hiddensub/foo hiddensub/bar
|
|
$ touch subdir/foo/spam/show
|
|
$ touch subdir/bar/ham/hide
|
|
$ touch hiddensub/foo/spam
|
|
$ touch hiddensub/bar/ham
|
|
$ hg add .
|
|
adding hiddensub/bar/ham
|
|
adding hiddensub/foo/spam
|
|
adding hide
|
|
adding show
|
|
adding subdir/bar/ham/hide
|
|
adding subdir/foo/spam/show
|
|
$ hg commit -m 'Init'
|
|
$ hg sparse --include show
|
|
$ hg sparse --exclude hide
|
|
$ hg sparse --include subdir
|
|
$ hg sparse --exclude subdir/foo
|
|
|
|
Test --cwd-list
|
|
|
|
$ hg sparse --cwd-list
|
|
- hiddensub
|
|
- hide
|
|
show
|
|
subdir
|
|
$ cd subdir
|
|
$ hg sparse --cwd-list
|
|
bar
|
|
- foo
|
|
$ hg sparse --include foo
|
|
$ hg sparse --cwd-list
|
|
bar
|
|
- foo
|