On Sat, May 23, 2020 at 09:07:50AM +0200, René Scharfe wrote: > > which are both correct. I wonder if there's a more elegant way to do it, > > though (probably not, as there's definitely some heuristic parsing going > > on to determine which checkout mode we're in; the new switch/restore > > alternatives don't suffer as much from this). > > Perhaps: > > diff --git a/builtin/checkout.c b/builtin/checkout.c > index e9d111bb83..24336e1017 100644 > --- a/builtin/checkout.c > +++ b/builtin/checkout.c > @@ -1689,7 +1689,7 @@ static int checkout_main(int argc, const char **argv, const char *prefix, > * Try to give more helpful suggestion. > * new_branch && argc > 1 will be caught later. > */ > - if (opts->new_branch && argc == 1) > + if (opts->new_branch && argc == 1 && !new_branch_info.commit) > die(_("'%s' is not a commit and a branch '%s' cannot be created from it"), > argv[0], opts->new_branch); > Oh, indeed, that's way better. Want to wrap it up as a patch? -Peff