|
|
$ 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
|
|
|
|
|
|
Test that patterns from ui.ignore options are read:
|
|
|
|
|
|
$ echo > .hgignore
|
|
|
$ cat >> $HGRCPATH << EOF
|
|
|
> [ui]
|
|
|
> ignore.other = $TESTTMP/.hg/testhgignore
|
|
|
> EOF
|
|
|
$ echo "glob:**.o" > .hg/testhgignore
|
|
|
$ hg status
|
|
|
A dir/b.o
|
|
|
? .hgignore
|
|
|
? a.c
|
|
|
? syntax
|
|
|
|
|
|
empty out testhgignore
|
|
|
$ echo > .hg/testhgignore
|
|
|
|
|
|
Test relative ignore path (issue4473):
|
|
|
|
|
|
$ cat >> $HGRCPATH << EOF
|
|
|
> [ui]
|
|
|
> ignore.relative = .hg/testhgignorerel
|
|
|
> EOF
|
|
|
$ echo "glob:*.o" > .hg/testhgignorerel
|
|
|
$ cd dir
|
|
|
$ hg status
|
|
|
A dir/b.o
|
|
|
? .hgignore
|
|
|
? a.c
|
|
|
? syntax
|
|
|
|
|
|
$ cd ..
|
|
|
$ echo > .hg/testhgignorerel
|
|
|
$ 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
|
|
|
|
|
|
Check recursive glob pattern matches no directories (dir/**/c.o matches dir/c.o)
|
|
|
|
|
|
$ echo "syntax: glob" > .hgignore
|
|
|
$ echo "dir/**/c.o" >> .hgignore
|
|
|
$ touch dir/c.o
|
|
|
$ mkdir dir/subdir
|
|
|
$ touch dir/subdir/c.o
|
|
|
$ hg status
|
|
|
A dir/b.o
|
|
|
? .hgignore
|
|
|
? a.c
|
|
|
? a.o
|
|
|
? syntax
|
|
|
|