Re: Change in .gitignore handling: intended or bug?
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Mar 10, 2016, 00:37 UTC
- Message-ID
- <xmqqd1r3f9rc.fsf@gitster.mtv.corp.google.com>
- In-Reply-To
- <CACsJy8D=OjLBN-EXyKM4NnGhSGftYX+RAaR9fg8ML3QWAAb+iQ@mail.gmail.com>
Duy Nguyen <pclouds@gmail.com> writes:
Show 11 quoted lines
> A bit off topic, but these two paragraphs may need rephrasing, I don't > really understand what it's trying to say > > - If the pattern does not contain a slash '/', Git treats it as > a shell glob pattern and checks for a match against the > pathname relative to the location of the `.gitignore` file > (relative to the toplevel of the work tree if not from a > `.gitignore` file). > > Not sure why "relative to the location of .gitignore file" matters. We > basically just take `basename $path` out and try to match it.
That is because the documentation was written with a single consistent matching mode in mind: you match various patterns against the FULL path in the repository, no matter where you find the path. If you find a pattern "*.c" in d/.gitignore file, a path d/hello.c matches, even though '*.c' does not match 'd/hello.c' in the shell glob sense, and the rule needs to clarify that the leading directory part "d/" in the path "d/hello.c" does not participate when matching it against the pattern "*.c" taken from "d/.gitignore" file.
If you start from a mindset to match hello.c part with *.c when you find both in d/ directory, "relative to the location" part would sound redundant or even confusing.
Show 9 quoted lines
> - 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/{asterisk}.html" matches
> "Documentation/git.html" but not "Documentation/ppc/ppc.html"
> or "tools/perf/Documentation/perf.html".
>
> Perhaps "Otherwise" can be stated explicitly that "if the pattern does
> contain any slash, besides the trailing one". Yeah, I think there originally was just two (it has slasn or it doesn't) and "If ..." followed by "Otherwise" was clear enough, but spellin it out would not hurt.