All of lore.kernel.org
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: "Anselm Schüler" <mail@anselmschueler.com>
Cc: git@vger.kernel.org
Subject: Re: Confusing error message for git switch -d
Date: Wed, 25 Sep 2024 16:11:25 -0700	[thread overview]
Message-ID: <xmqqr097miqq.fsf@gitster.g> (raw)
In-Reply-To: <ce9f0440-e724-4116-b63a-0e62c46c170d@anselmschueler.com> ("Anselm Schüler"'s message of "Thu, 26 Sep 2024 00:25:16 +0200")

Anselm Schüler <mail@anselmschueler.com> writes:

> I wanted to get the code for CPython 3.12, so I tried running git
> switch -d 3.12, expecting 3.12 to be a tag (which it wasn’t, and it
> was a remote branch).
>
> Git produced this error message:
>
> fatal: '--detach' cannot be used with '-b/-B/--orphan'
>
> This is confusing since I didn’t pass any of these options.

True.  FWIW, this is shared between "checkout" and "switch', and I
agree that there is a huge room for improvement.

With (arguably overly aggressive for its own worth) the "--guess"
option being default, giving the name of a unique remote-tracking
branch (that is, "3.12" appears as a remote-tracking branch of only
one remote, among possibly multiple remotes you have defined for the
repository) would behave as if what you said, which is "3.12", is
equivalent to "-b 3.12 --track origin/3.12" (where the "origin"
thing is the "only one" remote for which 3.12 exists as a
remote-tracking branch).  So

    $ git switch --detach 3.12

behaves as if you said

    $ git switch --detach -b 3.12 --track origin/3.12

and the error message is given.

I am merely saying that the mechanism from which this error message
is given can be _explained_.  I do not think it is well designed, as
it does not give a great end-user experience.

Disabling checkout.guess configuration would force you into the
habit of being a bit more explicit.  Even with checkout.guess
configured to false, you can still say

    $ git switch --detach origin/3.12

and because this does not blindly translate to -b/--track, you would
not see such an error.

A more appropriate design for "--guess" would be to notice the
presence of "--detach" and act differently, i.e. not rewriting
blindly 3.12 to "-b 3.12 -t origin/3.12" unconditionally, instead
rewrite "--detacu 3.12" to "--detach origin/3.12" if "--detach" is
there.

Patches welcome ;-)


      reply	other threads:[~2024-09-25 23:11 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-25 22:25 Confusing error message for git switch -d Anselm Schüler
2024-09-25 23:11 ` Junio C Hamano [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=xmqqr097miqq.fsf@gitster.g \
    --to=gitster@pobox.com \
    --cc=git@vger.kernel.org \
    --cc=mail@anselmschueler.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.