Linus Torvalds <torva...@linux-foundation.org> writes:

> So here's an RFC patch, and I'm quoting the above part of my thinking 
> because it's what the patch does, but it turns out that it's probably not 
> what we want, and I suspect the "." behavior (as opposed to "no filtering 
> at all") is actually better.
> ...
>
> Comments?

 1. I think some commands limit their operands to cwd and some work
    on the whole tree when given no pathspec.  I think the "no
    positive?  then let's give you everything except these you
    excluded" should base the definition of "everything" to that.
    IOW, "cd t && git grep -e foo" shows everything in t/ directory,
    so the default you would add would be "." for "grep"; "cd t &&
    git diff HEAD~100 HEAD" would show everything, so you would give
    ":(top)." for "diff".

 2. I am not sure what ctype.c change is about.  Care to elaborate?

 3. I think our recent trend is to wean ourselves away from "an
    empty element in pathspec means all paths match", and I think we
    even have accepted a patch to emit a warning.  Doesn't the
    warning trigger for the new code below?

> -     if (nr_exclude == n)
> -             die(_("There is nothing to exclude from by :(exclude) 
> patterns.\n"
> -                   "Perhaps you forgot to add either ':/' or '.' ?"));
> -
> +     /*
> +      * If everything is an exclude pattern, add one positive pattern
> +      * that matches everyting. We allocated an extra one for this.
> +      */
> +     if (nr_exclude == n) {
> +             init_pathspec_item(item + n, 0, "", 0, "");
> +             pathspec->nr++;
> +     }
>  
>       if (pathspec->magic & PATHSPEC_MAXDEPTH) {
>               if (flags & PATHSPEC_KEEP_ORDER)

Reply via email to