revset: use `subset &` in `filelog`
This takes advantage of the `fullreposet` smartness.
revset #0: file(COPYING)
0) wall 3.179066 comb 3.180000 user 3.140000 sys 0.040000 (best of 3)
1) wall 2.723699 comb 2.730000 user 2.690000 sys 0.040000 (best of 4)
$ hg init repo
$ cd repo
$ echo 0 > a
$ echo 0 > b
$ echo 0 > t.h
$ mkdir t
$ echo 0 > t/x
$ echo 0 > t/b
$ echo 0 > t/e.h
$ mkdir dir.h
$ echo 0 > dir.h/foo
$ hg ci -A -m m
adding a
adding b
adding dir.h/foo
adding t.h
adding t/b
adding t/e.h
adding t/x
$ touch nottracked
$ hg locate a
a
$ hg locate NONEXISTENT
[1]
$ hg locate
a
b
dir.h/foo
t.h
t/b
t/e.h
t/x
$ hg rm a
$ hg ci -m m
$ hg locate a
[1]
$ hg locate NONEXISTENT
[1]
$ hg locate relpath:NONEXISTENT
[1]
$ hg locate
b
dir.h/foo
t.h
t/b
t/e.h
t/x
$ hg locate -r 0 a
a
$ hg locate -r 0 NONEXISTENT
[1]
$ hg locate -r 0 relpath:NONEXISTENT
[1]
$ hg locate -r 0
a
b
dir.h/foo
t.h
t/b
t/e.h
t/x
-I/-X with relative path should work:
$ cd t
$ hg locate
b
dir.h/foo
t.h
t/b
t/e.h
t/x
$ hg locate -I ../t
t/b
t/e.h
t/x
Issue294: hg remove --after dir fails when dir.* also exists
$ cd ..
$ rm -r t
$ hg locate 't/**'
t/b (glob)
t/e.h (glob)
t/x (glob)
$ hg files
b
dir.h/foo
t.h
t/b
t/e.h
t/x
$ hg files b
b
$ mkdir otherdir
$ cd otherdir
$ hg locate b
../b (glob)
../t/b (glob)
$ hg locate '*.h'
../t.h (glob)
../t/e.h (glob)
$ hg locate path:t/x
../t/x (glob)
$ hg locate 're:.*\.h$'
../t.h (glob)
../t/e.h (glob)
$ hg locate -r 0 b
../b (glob)
../t/b (glob)
$ hg locate -r 0 '*.h'
../t.h (glob)
../t/e.h (glob)
$ hg locate -r 0 path:t/x
../t/x (glob)
$ hg locate -r 0 're:.*\.h$'
../t.h (glob)
../t/e.h (glob)
$ hg files
../b
../dir.h/foo
../t.h
../t/b
../t/e.h
../t/x
$ hg files .
[1]
$ cd ../..