Linus Torvalds <[email protected]> writes:
> No. The thing is, "git diff" is relative too - for path
> specifications. And the negative entries are pathspecs - and they act
> as relative ones.
>
> IOW, that whole
>
> cd drivers
> git diff A..B -- net/
>
> will actually show the diff for drivers/net - so the pathspec very
> much acts as relative to the cwd.
But that is not what I was talking about. Let's simplify. I'd say
for any command that acts on "everything" when pathspec is not
given, the two sets of actual paths affected by these two:
git cmd -- "net/"
git cmd -- ":!net/"
should have no overlap (obviously) and when you take union of the
two sets, that should equal to
git cmd --
i.e. no pathspecs.
>> 2. I am not sure what ctype.c change is about. Care to elaborate?
>
> I didn't see the need for it either until I made the rest of the
> patch, and it didn't work at all.
>
> The pathspec.c code uses "if (is_pathspec_magic(..))" to test whether
> a character is a short magiic pathspec character. But '^' wasn't in
> that set, because it was already marked as being (only) in the regex
> set.
>
> Does that whole is_pathspec_magic() thing make any sense when we have
> an array that specifies the special characters we react to? No it does
> not.
>
> But it is what the code does, and I just made that code work.
Ah, OK.