Re: gitignore broken in git 1.7.0.1: slash checks leading dirs
> 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