On Tue, Feb 07, 2017 at 05:48:26PM -0800, Linus Torvalds wrote: > > > On Tue, 7 Feb 2017, Linus Torvalds wrote: > > > > [ Clarification from original message, since Junio asked: I didn't > > actually want the semantics of '.' at all, since in a subdirectory it > > limits to the current subdirectory. So I'd suggest that in the absence > > of any positive pattern, there is simply no filtering at all, so > > whenever I say '.' as a pattern, I really meant ":(top)." which is > > even more of a cumbersom syntax that the current model really > > encourages. Crazy. Since I tend to always work in the top directory, > > the two are the same for me ] > > 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. > > Now _I_ don't much care, since I only work from the top level, but without > the "." behavior, you get into an odd situation that the negative match > will be relative to the current directory, but then the positive matches > will be everywhere else. > > Obviously, a negative match that has "top" set would change that logic. So > this patch is purely a request for further discussion. > > When I wrote the patch, I actually also removed the now stale entries from > the 'po' files, but I'm not including that part here because it just > distracts from the meat of it all. So this diff was actually generated > with the new syntax: > > git diff -p --stat -- :^po/ > > and the only thing even remotely subtle here is that it changes our ctype > array to make '^' be both a regex and a pathspec magic character. > > Everything else should be pretty darn obvious. > > The code *could* just track all the 'relative to top or not' bits in the > exclusion pattern, and then use whatever top-ness the exclusion patterns > have (and maybe fall back to the old warning if it had a mixture of > exclusionary patterns). I'll happily change it to act that way if people > think that makes sense. > > Comments? It seems to me that `git diff` and `git diff -- :^stuff` should have the same output if there aren't changes in stuff, and `git diff` does the same as `git diff -- :/` if you are in a subdirectory, not the same as `git diff .`. As such, the default positive match should be ':/' (which is shorter and less cumbersome than ':(top)', btw) Mike