Re: gitignore broken in git 1.7.0.1: slash checks leading dirs
- From
Jonathan Nieder <jrnieder@gmail.com>
- Date
- Mar 5, 2010, 15:12 UTC
- Message-ID
- <20100305151248.GA24748@progeny.tock>
- In-Reply-To
- <4B90C974.2050405@viscovery.net>
Johannes Sixt wrote:
> Jiri Slaby schrieb:
Show 14 quoted lines
>> having 'linux' line in .gitignore makes 'include/linux/vga_switcheroo.h' >> to be ignored > > That's the behavior that I would expect. > >> though the documentation says: >> *** >> If the pattern does not contain a slash /, git treats it as a shell >> glob pattern and checks for a match against the pathname without >> leading directories. >> *** > > and this citation confirms my expectation. Note that it says "pathname", > not "filename". 'include/linux' is a "pathname".
It would be more precise to say this citation does not have much to do with it. 'include/linux' contains a slash, so that paragraph does not describe what it means.
The next paragraph is more on point:
· Otherwise, git treats the pattern as a shell glob suitable for consumption by fnmatch(3) with the FNM_PATHNAME flag: wildcards in the pattern will not match a / in the pathname. For example, "Documentation/*.html" matches "Documentation/git.html" but not "Documentation/ppc/ppc.html". A leading slash matches the beginning of the pathname; for example, "/*.c" matches "cat-file.c" but not "mozilla-sha1/sha1.c".
The relevant sentence is the last one, and I can see how the length of the paragraph might be daunting. Maybe splitting it up would help?
· Otherwise, git treats the pattern as a shell glob suitable for consumption by fnmatch(3) with the FNM_PATHNAME flag: wildcards in the pattern will not match a / in the pathname. For example, "Documentation/*.html" matches "Documentation/git.html" and "tools/perf/Documentation/perf-diff.html" but not "Documentation/ppc/ppc.html".
· A leading slash matches the beginning of the pathname; for example, "/*.c" matches "cat-file.c" but not "mozilla-sha1/sha1.c".
Not sure.
Jonathan
-- %< -- Subject: gitignore.5: Clarify that path matches are not anchored
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> --- Documentation/gitignore.txt | 11 +++++++---- 1 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/Documentation/gitignore.txt b/Documentation/gitignore.txt index 98c459d..fa15422 100644 --- a/Documentation/gitignore.txt +++ b/Documentation/gitignore.txt @@ -89,10 +89,13 @@ Patterns have the following format: for consumption by fnmatch(3) with the FNM_PATHNAME flag: wildcards in the pattern will not match a / in the pathname. For example, "Documentation/\*.html" matches - "Documentation/git.html" but not - "Documentation/ppc/ppc.html". A leading slash matches the - beginning of the pathname; for example, "/*.c" matches - "cat-file.c" but not "mozilla-sha1/sha1.c". + "Documentation/git.html" and + "tools/perf/Documentation/perf-diff.html" but not + "Documentation/ppc/ppc.html". + + - A leading slash matches the beginning of the pathname; + for example, "/*.c" matches "cat-file.c" but not + "mozilla-sha1/sha1.c". An example:
-- 1.7.0