* Q: .gitignore and asterisk "*"
@ 2026-10-30 10:46 Windl, Ulrich
2026-10-30 16:59 ` Junio C Hamano
0 siblings, 1 reply; 2+ messages in thread
From: Windl, Ulrich @ 2026-10-30 10:46 UTC (permalink / raw)
To: git@vger.kernel.org
[-- Attachment #1: Type: text/plain, Size: 642 bytes --]
Hi!
I think the documentation for gitignore(5) could be improved regarding "*":
It's nor clear whether "*" matches an empty string.
So when I have
foo.log
foo.msg
foo.sh
foo-whatever.log
foo-whetever.msg
Would e.g. "foo*.log" cover all the logs?
The manual says:
• An asterisk "*" matches anything except a slash. The character "?"
matches any one character except "/". The range notation, e.g.
[a-zA-Z], can be used to match one of the characters in a range.
See fnmatch(3) and the FNM_PATHNAME flag for a more detailed
description.
Kind regards,
Ulrich Windl
[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 5581 bytes --]
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: Q: .gitignore and asterisk "*"
2026-10-30 10:46 Q: .gitignore and asterisk "*" Windl, Ulrich
@ 2026-10-30 16:59 ` Junio C Hamano
0 siblings, 0 replies; 2+ messages in thread
From: Junio C Hamano @ 2026-10-30 16:59 UTC (permalink / raw)
To: Windl, Ulrich; +Cc: git@vger.kernel.org
"Windl, Ulrich" <u.windl@ukr.de> writes:
> I think the documentation for gitignore(5) could be improved regarding "*":
> It's nor clear whether "*" matches an empty string.
> So when I have
> foo.log
> foo.msg
> foo.sh
> foo-whatever.log
> foo-whetever.msg
> Would e.g. "foo*.log" cover all the logs?
>
> The manual says:
> • An asterisk "*" matches anything except a slash. The character "?"
> matches any one character except "/". The range notation, e.g.
> [a-zA-Z], can be used to match one of the characters in a range.
> See fnmatch(3) and the FNM_PATHNAME flag for a more detailed
> description.
Very good point.
The reference to fnmatch(3) may not make readers to consult the
documentation for the library function. The system they are on may
not even have "man". fnmatch(3) often refers to glob(7), which
typically would say that a '*' (not between brackets) matches any
string, including the empty string. The reference to FNM_PATHNAME
we have there is an attempt to refer back to fnmatch(3) that would
typically say that the wildcard does not match a slash.
How about rewriting the entry like so to reduce external references?
----- >8 -----
Subject: gitignore: rewrite wildcard description
The documentation for '.gitignore' makes reference to fnmatch(3) and
FNM_PATHNAME to describe how an asterisk "*" and a question mark "?"
behave. Even though it spells out that these wildcard characters
do not match a slash, it does not say if an asterisk matches an
empty string (it does).
Rewrite the section so that the readers would get a more complete
picture without requiring them to know what fnmatch(3) and glob(7)
says.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
Documentation/gitignore.adoc | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)
diff --git c/Documentation/gitignore.adoc w/Documentation/gitignore.adoc
index 7979e50f18..671a5a4c99 100644
--- c/Documentation/gitignore.adoc
+++ w/Documentation/gitignore.adoc
@@ -110,11 +110,16 @@ PATTERN FORMAT
and `a/frotz` that is a directory (all paths are relative from
the `.gitignore` file).
- - An asterisk "`*`" matches anything except a slash.
- The character "`?`" matches any one character except "`/`".
- The range notation, e.g. `[a-zA-Z]`, can be used to match
- one of the characters in a range. See fnmatch(3) and the
- FNM_PATHNAME flag for a more detailed description.
+ - An asterisk "`*`" matches string of any length, and a question mark
+ "`?`" matches any single character, but these wildcard characters
+ do not match a slash "`/`".
+
+ - A pair of brackets that enclose characters match one of the listed
+ characters, and a range notation inside them, e.g., "`[a-zA-Z]`",
+ would behave as if all the characters in the range were listed there
+ instead. Wildcard characters "`*`" and "`?`" lose their special
+ meaning inside a pair of brackets, e.g., "`[*]`" would match an
+ asterisk and nothing else.
- A backslash ("`\`") can be used to escape any character. E.g., "`\*`"
matches a literal asterisk (and "`\a`" matches "`a`", even though
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-10-30 16:59 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-30 10:46 Q: .gitignore and asterisk "*" Windl, Ulrich
2026-10-30 16:59 ` Junio C Hamano
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox