wildmatch: change behavior of "foo**bar" in WM_PATHNAME mode
commite5bbe09e88545cd1a3bcf2b157f020f92e0b5def
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>
Sat, 27 Oct 2018 08:48:23 +0000 (27 10:48 +0200)
committerJunio C Hamano <gitster@pobox.com>
Mon, 29 Oct 2018 04:19:22 +0000 (29 13:19 +0900)
treefb7c8380878bffd65861a94bf9e26151b9d331d3
parent268fbcd172cdb306e8a3e7143cc16677c963d6cd
wildmatch: change behavior of "foo**bar" in WM_PATHNAME mode

In WM_PATHNAME mode (or FNM_PATHNAME), '*' does not match '/' and '**'
can but only in three patterns:

- '**/' matches zero or more leading directories
- '/**/' matches zero or more directories in between
- '/**' matches zero or more trailing directories/files

When '**' is present but not in one of these patterns, the current
behavior is consider the pattern invalid and stop matching. In other
words, 'foo**bar' never matches anything, whatever you throw at it.

This behavior is arguably a bit confusing partly because we can't
really tell the user their pattern is invalid so that they can fix
it. So instead, tolerate it and make '**' act like two regular '*'s
(which is essentially the same as a single asterisk). This behavior
seems more predictable.

Noticed-by: dana <dana@dana.is>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/gitignore.txt
t/t3070-wildmatch.sh
wildmatch.c
wildmatch.h