[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [OT] trouble with .gitignore patterns



On 2011-01-16 21:45 +0100, Boyd Stephen Smith Jr. wrote:

> In <[🔎] 87aaj0vceg.fsf@turtle.gmx.de>, Sven Joachim wrote:
>>On 2011-01-16 20:58 +0100, Boyd Stephen Smith Jr. wrote:
>>> In <[🔎] 20110116160216.GA6914@think.homelan>, Andrei Popescu wrote:
>>>>$ git init
>>>>Initialized empty Git repository in /home/amp/Download/gitest/.git/
>>>>$ touch dir/file3
>>>>$ echo '*' > .gitignore
>>>>$ git status -s
>>>>$ echo '!file1' >> .gitignore
>>>>$ echo '!dir/' >> .gitignore
>>>>$ git status -s
>>>>?? file1
>>>>$
>>>>
>>>>Why is 'dir' still ignored?
>>>>
>>> Looks like a bug to me.  It is at least an undocumented feature.
>>
>>The FAQ mentions¹ that you cannot add empty directories in git, and the
>>'*' in .gitignore means that no _files_ below dir/ will be added.
>
> !dir/ doesn't just match a directory.  Per the gitignore(5) manpage:
>        ·   An optional prefix !  which negates the pattern; any matching file
>            excluded by a previous pattern will become included again. If a
>            negated pattern matches, this will override lower precedence
>            patterns sources.
>
>        ·   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).

I see.  Indeed, even replacing "!dir/" with "!dir/*" or "!dir/file3" in
Andrei's example does not persuade "git status -s" to mention the file.
This seems to be a bug indeed, taking it to git@vger.kernel.org would be
good.

Sven


Reply to: