On Thu, Oct 18, 2018 at 12:23:26PM +0900, Junio C Hamano wrote:
> Jeff King <[email protected]> writes:
>
> > I'd probably call it something verbose and boring like
> > --use-default-with-uninteresting or --default-on-negative.
> > I dunno.
>
> These two names are improvement, but there needs a hint that the
> change we are interested in is to use default even when revs are
> given as long as ALL of them are negative ones. Which in turn means
> there is NO positive ones given.
>
> So perhaps "--use-default-without-any-positive".
Yeah, though that's getting pretty long. Another way is probably to say
"only" more clearly. Like "--default-on-only-negative" or something.
> Having said that, I have to wonder how serious a breakage we are
> going to cause to established users and scripts if we made this
> change without any explicit option. After all, it would be rather
> obvious that people will get a history with some commits (or none at
> all) when they were expecting no output that the "default behaviour"
> has changed. I also wonder how would scripts take advantage of the
> current "defeat --default as soon as we see any rev, even a negative
> one"---in short, I am not sure if the theoretical regression this
> new "option" is trying to avoid is worth avoiding in the first
> place.
Just to play devil's advocate, how about this:
git log --branches=jk/* --not origin/master
Right now that shows nothing if there are no matching branches. But I
think under the proposed behavior, it would start showing HEAD, which
seems counter-intuitive.
Or are we going to count any positive selector as a positive ref, even
if it matches nothing? I could buy that, though it means that the
command above is subtly different from one or both of:
branches() {
git for-each-ref --format='%(refname)' refs/heads/jk/*
}
# is --stdin a selector, too?
branches | git log --stdin --not origin/master
# here we have no idea that the user did a query and must show HEAD
git log $(branches) --not origin/master
> Is there a way to say "usually this command has built-in --default=HEAD
> behaviour, but I am declining that" already, i.e.
>
> $ git log --no-default $REVS
I don't think we have that, but regardless of this patch, it seems like
a potentially useful thing. I think we mostly get around it by the fact
that scripts ought to be using "rev-list", and it does not have such a
default that needs to be overridden.
-Peff