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@xxxxxxxxx> 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 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html