mirror of
https://github.com/facebook/sapling.git
synced 2025-01-07 14:10:42 +03:00
c5a04c46b0
If a directory matched a regex in hgignore but the files inside the directory did not match the regex, they would appear as deleted in hg status. This change fixes them to appear normally in hg status. Removing the ignore(nf) conditional here is ok because it just means we might stat more files than we had before. My testing on a large repo shows this causes no performance regression since the only additional files being stat'd are the ones that are missing (i.e. status=!), which are generally rare.
137 lines
2.0 KiB
Perl
137 lines
2.0 KiB
Perl
$ hg init
|
|
|
|
Issue562: .hgignore requires newline at end:
|
|
|
|
$ touch foo
|
|
$ touch bar
|
|
$ touch baz
|
|
$ cat > makeignore.py <<EOF
|
|
> f = open(".hgignore", "w")
|
|
> f.write("ignore\n")
|
|
> f.write("foo\n")
|
|
> # No EOL here
|
|
> f.write("bar")
|
|
> f.close()
|
|
> EOF
|
|
|
|
$ python makeignore.py
|
|
|
|
Should display baz only:
|
|
|
|
$ hg status
|
|
? baz
|
|
|
|
$ rm foo bar baz .hgignore makeignore.py
|
|
|
|
$ touch a.o
|
|
$ touch a.c
|
|
$ touch syntax
|
|
$ mkdir dir
|
|
$ touch dir/a.o
|
|
$ touch dir/b.o
|
|
$ touch dir/c.o
|
|
|
|
$ hg add dir/a.o
|
|
$ hg commit -m 0
|
|
$ hg add dir/b.o
|
|
|
|
$ hg status
|
|
A dir/b.o
|
|
? a.c
|
|
? a.o
|
|
? dir/c.o
|
|
? syntax
|
|
|
|
$ echo "*.o" > .hgignore
|
|
$ hg status
|
|
abort: $TESTTMP/.hgignore: invalid pattern (relre): *.o (glob)
|
|
[255]
|
|
|
|
$ echo ".*\.o" > .hgignore
|
|
$ hg status
|
|
A dir/b.o
|
|
? .hgignore
|
|
? a.c
|
|
? syntax
|
|
|
|
Check it does not ignore the current directory '.':
|
|
|
|
$ echo "^\." > .hgignore
|
|
$ hg status
|
|
A dir/b.o
|
|
? a.c
|
|
? a.o
|
|
? dir/c.o
|
|
? syntax
|
|
|
|
$ echo "glob:**.o" > .hgignore
|
|
$ hg status
|
|
A dir/b.o
|
|
? .hgignore
|
|
? a.c
|
|
? syntax
|
|
|
|
$ echo "glob:*.o" > .hgignore
|
|
$ hg status
|
|
A dir/b.o
|
|
? .hgignore
|
|
? a.c
|
|
? syntax
|
|
|
|
$ echo "syntax: glob" > .hgignore
|
|
$ echo "re:.*\.o" >> .hgignore
|
|
$ hg status
|
|
A dir/b.o
|
|
? .hgignore
|
|
? a.c
|
|
? syntax
|
|
|
|
$ echo "syntax: invalid" > .hgignore
|
|
$ hg status
|
|
$TESTTMP/.hgignore: ignoring invalid syntax 'invalid' (glob)
|
|
A dir/b.o
|
|
? .hgignore
|
|
? a.c
|
|
? a.o
|
|
? dir/c.o
|
|
? syntax
|
|
|
|
$ echo "syntax: glob" > .hgignore
|
|
$ echo "*.o" >> .hgignore
|
|
$ hg status
|
|
A dir/b.o
|
|
? .hgignore
|
|
? a.c
|
|
? syntax
|
|
|
|
$ echo "relglob:syntax*" > .hgignore
|
|
$ hg status
|
|
A dir/b.o
|
|
? .hgignore
|
|
? a.c
|
|
? a.o
|
|
? dir/c.o
|
|
|
|
$ echo "relglob:*" > .hgignore
|
|
$ hg status
|
|
A dir/b.o
|
|
|
|
$ cd dir
|
|
$ hg status .
|
|
A b.o
|
|
|
|
$ hg debugignore
|
|
(?:(?:|.*/)[^/]*(?:/|$))
|
|
|
|
$ cd ..
|
|
|
|
Check patterns that match only the directory
|
|
|
|
$ echo "^dir\$" > .hgignore
|
|
$ hg status
|
|
A dir/b.o
|
|
? .hgignore
|
|
? a.c
|
|
? a.o
|
|
? syntax
|