Hi everyone,

I think there is a typo in the gitignore docs.

Its stated on https://git-scm.com/docs/gitignore that

>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).

I think that maybe two things are not 100% correct. First I think it
should be "If the pattern does contain" instead of "does not contain".
Secondly, I think it should be mentioned that this is only true for
slashes that are not a trailing slash.

You find discussions about this at
https://github.com/git/git-scm.com/issues/1332 and at
https://stackoverflow.com/a/41761521/2311074

Here is my proposal for an alternative, maybe more clear version:

>Whenever you have a string that contains a non-trailing slash "/" , its always 
>considered from
>the root. There is no difference between foo/bar and /foo/bar. The pattern 
>foo/ is not
>considered from the root, because it has no non-trailing slash "/".
>One may match a path that does not start at the root by using "**" (see below).

Also since we are on it, I would suggest to reduce

>If the pattern ends with a slash, it is removed for the purpose of the 
>following description, but it
>would only find a match with a directory. In other words, foo/ will match a 
>directory foo and
>paths underneath it, but will not match a regular file or a symbolic link foo 
>(this is consistent
>with the way how pathspec works in general in Git).

to

>If the pattern ends with a slash, it would only find a match with a directory. 
>In other words, foo/
>will match a directory foo and paths underneath it, but will not match a 
>regular file or a
>symbolic link foo.

What do you think?

Best regards,
Adam

Reply via email to