On Tue, Feb 7, 2017 at 6:40 PM, Mike Hommey <mh@xxxxxxxxxxxx> wrote: > > As such, the default positive match should be ':/' (which is shorter and > less cumbersome than ':(top)', btw) So that's what my patch does. However, it's actually very counter-intuitive in a subdirectory. Git doesn't do much of that, but let me give you an example from the kernel. Again, this is not an example of anything I would do (because I'm always at the top), but: [torvalds@i7 linux]$ cd drivers/ [torvalds@i7 drivers]$ ll .. whee, *lots* of diorectories .. .. lets see what happened in net/ .. [torvalds@i7 drivers]$ git diff -M --dirstat=1,cumulative v4.10-rc6..v4.10-rc7 -- net/ 7.4% drivers/net/ethernet/adaptec/ 47.9% drivers/net/ethernet/cadence/ 7.1% drivers/net/ethernet/emulex/benet/ 1.1% drivers/net/ethernet/freescale/ 3.6% drivers/net/ethernet/mellanox/mlx4/ 23.5% drivers/net/ethernet/mellanox/mlx5/core/ 27.2% drivers/net/ethernet/mellanox/ 92.5% drivers/net/ethernet/ 5.3% drivers/net/wireless/intel/iwlwifi/mvm/ 5.9% drivers/net/wireless/intel/iwlwifi/ 100.0% drivers/net/ .. let's see what happened *outside* of net/ .. [torvalds@i7 drivers]$ git diff -M --dirstat=1,cumulative v4.10-rc6..v4.10-rc7 -- :^net/ 2.4% arch/arm64/crypto/ 2.1% arch/powerpc/include/asm/ 1.5% arch/powerpc/kernel/ 3.9% arch/powerpc/ 3.5% arch/sparc/kernel/ 4.1% arch/sparc/ 8.3% arch/x86/events/intel/ 1.7% arch/x86/kernel/cpu/mcheck/ 1.6% arch/x86/kernel/cpu/microcode/ 3.3% arch/x86/kernel/cpu/ 3.8% arch/x86/kernel/ 1.0% arch/x86/platform/efi/ 13.3% arch/x86/ 24.0% arch/ 1.1% drivers/base/ 2.9% drivers/dma/ 12.3% drivers/gpu/drm/i915/ 1.0% drivers/gpu/drm/nouveau/ 16.2% drivers/gpu/drm/ 3.9% drivers/hid/ 1.6% drivers/iio/ 2.3% drivers/regulator/ ... Notice? When you say "show only the net subdirectory" it does the obvious thing relative to the current working directory, but if you say "show everything _but_ the net subdirectory" it suddenly starts showing other things. Now, it would be easy enough to say "if you don't give a positive path, we'll just use the empty path that matches the negative paths". So if you ask for a negative relative "net" directory, we'll use the relative empty path. And if you ask for a negative absolute path, we'll use the empty absolute path. It's a couple of lines more, and I think it might avoid some confusion. And I suspect almost nobody has ever done any of this before,. because the syntax was/is so cumbersome. Linus