git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Cannot negate `*` ignore pattern for directory with space in the name
@ 2018-09-18  4:03 Victor Engmark
  2018-09-18 17:59 ` Duy Nguyen
  0 siblings, 1 reply; 3+ messages in thread
From: Victor Engmark @ 2018-09-18  4:03 UTC (permalink / raw)
  To: git

To reproduce (from <https://unix.stackexchange.com/q/469708/3645>):

$ cd "$(mktemp --directory)"
$ mkdir foo\ bar
$ touch foo\ bar/test
$ git init
Initialized empty Git repository in /tmp/tmp.iGmBR6y2xR/.git/
$ git status --short
?? foo bar/
$ cat > .gitignore << EOF
> *
> !foo bar
> !foo\ bar
> !"foo bar"
> "!foo bar"
> !foo*
> !foo bar/
> !foo\ bar/
> !"foo bar/"
> "!foo bar/"
> !foo*/
> EOF
$ git status --short
[no output]

The pattern *can* be negated if it only matches directories:

$ cat > .gitignore << EOF
> */
> !foo\ bar/
> EOF
$ git status --short
?? .gitignore
?? foo bar/

I encountered this problem because Visual Studio Code creates a
configuration directory called "Code - OSS", and I exclude everything in
~/.config by default to avoid noise in `git status`.

$ git --version
git version 2.19.0

-- 
Kind regards
Victor Engmark

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Cannot negate `*` ignore pattern for directory with space in the name
  2018-09-18  4:03 Cannot negate `*` ignore pattern for directory with space in the name Victor Engmark
@ 2018-09-18 17:59 ` Duy Nguyen
  2018-09-18 21:03   ` Victor Engmark
  0 siblings, 1 reply; 3+ messages in thread
From: Duy Nguyen @ 2018-09-18 17:59 UTC (permalink / raw)
  To: victorengmark; +Cc: Git Mailing List

On Tue, Sep 18, 2018 at 6:13 AM Victor Engmark
<victorengmark@catalyst.net.nz> wrote:
>
> To reproduce (from <https://unix.stackexchange.com/q/469708/3645>):
>
> $ cd "$(mktemp --directory)"
> $ mkdir foo\ bar
> $ touch foo\ bar/test
> $ git init
> Initialized empty Git repository in /tmp/tmp.iGmBR6y2xR/.git/
> $ git status --short
> ?? foo bar/
> $ cat > .gitignore << EOF
> > *
> > !foo bar
> > !foo\ bar
> > !"foo bar"

No need to quote, either with double quotes or backslashes. They are
interpreted as literal " and \

> $ git status --short
> [no output]

It's not exactly a bug, more like a trap. '*' matches anything, at
every level. So even if you negate 'foo bar', when we check 'foo
bar/test', '*' pattern applies again and ignores 'foo bar/test'. If
the first line in .gitignore is /* instead of * (to keep match
anything at the top level directory only), then it should work.
-- 
Duy

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Cannot negate `*` ignore pattern for directory with space in the name
  2018-09-18 17:59 ` Duy Nguyen
@ 2018-09-18 21:03   ` Victor Engmark
  0 siblings, 0 replies; 3+ messages in thread
From: Victor Engmark @ 2018-09-18 21:03 UTC (permalink / raw)
  To: Git Mailing List

On 19/09/2018 05:59, Duy Nguyen wrote:
> On Tue, Sep 18, 2018 at 6:13 AM Victor Engmark
> <victorengmark@catalyst.net.nz> wrote:
[…]
>> $ cat > .gitignore << EOF
>>> *
>>> !foo bar
>>> !foo\ bar
>>> !"foo bar"
> 
> No need to quote, either with double quotes or backslashes. They are
> interpreted as literal " and \

Thanks! I just tried a bunch of things to see if anything stuck.

>> $ git status --short
>> [no output]
> 
> It's not exactly a bug, more like a trap. '*' matches anything, at
> every level. So even if you negate 'foo bar', when we check 'foo
> bar/test', '*' pattern applies again and ignores 'foo bar/test'. If
> the first line in .gitignore is /* instead of * (to keep match
> anything at the top level directory only), then it should work.

You're right, I've managed to induce the placebo effect in myself :)
Thank you for the help, and sorry for the noise!

-- 
Cheers
Victor

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2018-09-18 21:03 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-09-18  4:03 Cannot negate `*` ignore pattern for directory with space in the name Victor Engmark
2018-09-18 17:59 ` Duy Nguyen
2018-09-18 21:03   ` Victor Engmark

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).