Subject: Re: [PATCH 0/6] Introduce pathspec struct

From: David Ripton <[email-masked]>
Date: Tue, 28 Sep 2010 18:22:02 -0500

On 09/28/10 04:37, Junio C Hamano wrote:

>   - David's "git grep --exclude-dir D" topic should be able to internally
>     use the same negative pathspec mechanism.  At the command line level,
>     it allows (and needs to allow) only the leading prefix (which is how
>     GNU grep's --exclude-dir works), but it makes tons of sense for us to
>     allow "--exclude $pattern" from the command line, and share the
>     mechanism internally between the two.

I don't think GNU grep's --exclude-dir only allows the leading prefix. 
Here the data directory is a level below the top, but --exclude-dir=data 
effectively excludes it:

$ grep -R behemoth_green *
Binary file slugathon/util/colors.pyc matches
slugathon/util/colors.py:    "behemoth_green": (2, 129, 2),
Binary file slugathon/data/creaturedata.pyc matches
slugathon/data/creaturedata.py:"Behemoth": ("Behemoths", 8, 3, 0, 0, 
"creature", 0, 0, 18, "behemoth_green"),
slugathon/data/creaturedata.py:"Cyclops": ("Cyclopes", 9, 2, 0, 0, 
"creature", 0, 0, 28, "behemoth_green"),

grep -R --exclude-dir=data behemoth_green *
Binary file slugathon/util/colors.pyc matches
slugathon/util/colors.py:    "behemoth_green": (2, 129, 2),

IMO it's useful to allow excluding directories below the top like it 
currently does, because some projects might have a bunch of noise 
directories with the same name, and having --exclude-dir exclude them 
all would be handy.

That said, if consistency with other exclude patterns is more important 
than this use case, fine with me.

-- 
David Ripton    [email-masked]