On Tue, Feb 07, 2017 at 06:49:24PM -0800, Linus Torvalds wrote: > 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. I can totally see how this can be confusing, but the case can be made that the problem is that `git diff` would be showing everything if you didn't pass an exclusion list. Now, what you're suggesting introduces some inconsistency, which, in itself, can cause confusion. I'm not sure which confusion is worse. Mike