From: Junio C Hamano Date: Wed, 29 Aug 2018 21:03:34 GMT Subject: Re: [RFC] revision: Don't let ^ cancel out the default Message-ID: In-Reply-To: <20180829200553.19379-1-agruenba@redhat.com> Andreas Gruenbacher writes: > Some commands like 'log' default to HEAD if no other revisions are > specified on the command line or otherwise. Unfortunately, excludes > (^) 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.