On Thu, 18 Oct 2018 at 08:53, Jeff King <peff@xxxxxxxx> wrote: > On Wed, Oct 17, 2018 at 03:49:47PM +0200, Andreas Gruenbacher wrote: > > @@ -2431,7 +2446,11 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, struct s > > opt->tweak(revs, opt); > > if (revs->show_merge) > > prepare_show_merge(revs); > > - if (revs->def && !revs->pending.nr && !revs->rev_input_given && !got_rev_arg) { > > + if (revs->sticky_default) > > + cancel_default = has_interesting_revisions(); > > + else > > + cancel_default = got_rev_arg; > > + if (revs->def && !revs->rev_input_given && !cancel_default) { > > How do you want to handle "maybe has a ref" options like --stdin, > --tags, etc? Those set revs->rev_input_given. > > With the code you have here, rev_input_given overrides any > sticky_default decision, and you cannot do this: > > git log --not --remotes=origin > > and get the default, because even though you have only UNINTERESTING > commits, rev_input_given is true. > > If you move rev_input_given to the cancel_default line above the final > conditional and turn that conditional into: > > if (revs->def && !cancel_default) > > then it works. Yes, this still needs fixing, I'm just not sure yet if this is the right way. Thanks, Andreas