Andreas Gruenbacher <agruenba@xxxxxxxxxx> writes: > Some commands like 'log' default to HEAD if no other revisions are > specified on the command line or otherwise. Unfortunately, excludes > (^<rev>) cancel out that default, so when a command only excludes > revisions (e.g., 'git log ^origin/master'), the command will not produce > any result. > > If all the specified revisions are excludes, it seems more useful to > stick with the default revision instead. > > This makes writing wrappers that exclude certain revisions much easier: > for example, a simple alias l='git log ^origin/master' will show the > revisions between origin/master and HEAD by default, and 'l foo' will > show the revisions between origin/master and foo, as you would usually > expect. That is a _huge_ departure from the behaviour established for the past 10 years, but it would certainly be more useful. As long as we can prove that that a command line with only negative revs is absolutely useless, the backward incompatibility may be OK to swallow, especially for commands like "git log" that implicitly use "--default HEAD", as they are meant for human consumption, and not for scripts. I am not offhand 100% sure that a rev list with only negative revs is totally useless, though.