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