git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Jeff King <peff@peff.net>
To: Duy Nguyen <pclouds@gmail.com>
Cc: AJ <alljeep@gmail.com>, Git Mailing List <git@vger.kernel.org>
Subject: Re: Feature Request: gitignore recursion
Date: Mon, 7 Oct 2013 07:24:11 -0400	[thread overview]
Message-ID: <20131007112411.GA5792@sigill.intra.peff.net> (raw)
In-Reply-To: <CACsJy8CHcyDrzieX1Ps3LU2UxCP+QJdv9+5BXZj9Mw2bMs5v3w@mail.gmail.com>

On Mon, Oct 07, 2013 at 05:26:17PM +0700, Nguyen Thai Ngoc Duy wrote:

> On Mon, Oct 7, 2013 at 5:23 AM, AJ <alljeep@gmail.com> wrote:
> > I'm hoping to get the following feature implemented into git.
> >
> > Add the ability to recursively include using:
> > !/my_dir/**/*
> 
> You can do that since v1.8.2. Actually the pattern should be
> 
> !/my_dir/**
> 
> Checkout gitignore man page for more information.

I think that is a reasonable approach to doing what the OP wants.

However, one thing I expected to work but didn't is:

  echo '*' >.gitignore
  echo '!*' >my_dir/.gitignore

That _does_ work for attributes, like:

  echo '* foo=one' >.gitattributes
  echo '* foo=two' >my_dir/.gitattributes

where the more-specific file takes precedence. It works because we keep
an attribute stack, and look from most-specific directory to least.

The directory traversal code, however, tries to avoid entering
directories that are ignored. So if you have told it to ignore "my_dir",
we will not even look at "my_dir/.gitignore".

This is arguably a bug, as the documentation says that more specific
paths should take precedence over toplevel ones. But the optimization of
pruning ignored paths is very important for performance; otherwise, we
would end up enumerating entire ignored subdirectories on the off chance
that they have a negative .gitignore entry buried deep inside them.

So I don't think it is worth fixing, but it might be worth mentioning in
the documentation. Or is it mentioned somewhere that I missed?

-Peff

  reply	other threads:[~2013-10-07 11:24 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-10-06 22:23 Feature Request: gitignore recursion AJ
2013-10-07 10:26 ` Duy Nguyen
2013-10-07 11:24   ` Jeff King [this message]
2013-10-07 13:41     ` Duy Nguyen
2013-10-10  7:59       ` Karsten Blees
2013-10-10 16:22         ` Jeff King
2013-10-10  7:59   ` Karsten Blees

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20131007112411.GA5792@sigill.intra.peff.net \
    --to=peff@peff.net \
    --cc=alljeep@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=pclouds@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).