From: Junio C Hamano <gitster@pobox.com>
To: Jeff King <peff@peff.net>
Cc: Mark Levedahl <mlevedahl@gmail.com>, git@vger.kernel.org
Subject: Re: [PATCH 5/5] docs/checkout: clarify what "non-branch" means
Date: Mon, 13 Apr 2009 09:31:31 -0700 [thread overview]
Message-ID: <7vmyakh5wc.fsf@gitster.siamese.dyndns.org> (raw)
In-Reply-To: <20090413112104.GE15982@coredump.intra.peff.net> (Jeff King's message of "Mon, 13 Apr 2009 07:21:04 -0400")
Jeff King <peff@peff.net> writes:
> I hope this helps a little bit with Mark's confusion. But while writing
> it, I really think it would be a simpler rule to say "if it's in
> refs/heads/, then it's a branch" (which is similar to what Mark
> suggested earlier).
>
> So "git checkout refs/heads/master" would be identical to "git checkout
> master". That would require a code change, though.
Sorry, but I do not get the logic behind such a change.
Because you won't be breaking "git checkout frotz" that checks out the
branch whose name is frotz (i.e. refs/heads/frotz) even when a tag frotz
exists (i.e. refs/tags/frotz), the updated code cannot be "try to resolve
the token given from the command line as-is, and if it is in refs/heads/
it is a branch switch, otherwise it is a detach at the commit". The
updated code has to be "try to resolve the token appended to refs/heads
and if it resolves, that is a branch switch. Otherwise if the token
already begins with refs/heads/ then it also is a switch to the branch
whose name is the token minus the leading refs/heads/, otherwise try to
resolve it as-is and detach at that commit".
The result changes behaviour for two classes of people.
(1) People who have a branch whose name is refs/heads/frotz. Before they
could switch to the branch by mechanically giving its name. Now they
have to remember that such a branch with an unusual name needs to be
fully spelled "git checkout refs/heads/refs/heads/frotz".
(2) People who have scripts that gets a refname (or a list of refnames),
and drive "git checkout" to either switch to the branch if that ref
is a branch or detach at the commit if it isn't. Their script had to
check if the ref begins with refs/heads/ and if so strip that before
giving it to "git checkout", but with your change they do not have
to.
The former technically is a usability regression which I presume we do not
care. The user with such a branch name is sick enough and deserve to be
punished ;-)
The latter might be improvement, but does it really matter?
Such a script is already checking with refs/heads/ (and it is easy to
codify in a script anyway), and with or without the change you suggest, it
will check out the master branch when the ref is refs/heads/master and the
script strips the leading refs/heads/. With the change, it also needs to
delete the logic of stripping refs/heads/ to deal with (1) sanely.
In addition, most likely such a script to check out a series of refs in an
automated fashion is about autobuilding random set of commits, and it
would probably be better off working on the HEAD detached at given commit,
whether the incoming ref happens to be a branch ref or not.
So I am still scratching my head, wondering what improvement from the end
user's point of view you will be getting from such a change...
next prev parent reply other threads:[~2009-04-13 16:33 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-04-10 0:28 [PATCH] builtin-branch - allow deleting a fully specified branch-name Mark Levedahl
2009-04-10 0:39 ` Junio C Hamano
2009-04-10 1:19 ` Mark Levedahl
2009-04-10 3:18 ` Junio C Hamano
2009-04-11 17:01 ` Mark Levedahl
2009-04-12 7:20 ` Jeff King
2009-04-12 8:22 ` Junio C Hamano
2009-04-13 8:56 ` Jeff King
2009-04-13 9:54 ` Junio C Hamano
2009-04-13 11:09 ` Jeff King
2009-04-13 11:11 ` [PATCH 1/5] doc: clarify --no-track option Jeff King
2009-04-13 11:11 ` [PATCH 2/5] doc: refer to tracking configuration as "upstream" Jeff King
2009-04-13 11:18 ` [PATCH 3/5] doc/checkout: refer to git-branch(1) as appropriate Jeff King
2009-04-13 11:19 ` [PATCH 4/5] doc/checkout: split checkout and branch creation in synopsis Jeff King
[not found] ` <fabb9a1e0904130613g5b664706jb6a3c29107ac1fc9@mail.gmail.com>
2009-04-13 13:19 ` Jeff King
2009-04-13 13:21 ` Sverre Rabbelier
2009-04-13 11:21 ` [PATCH 5/5] docs/checkout: clarify what "non-branch" means Jeff King
2009-04-13 16:31 ` Junio C Hamano [this message]
2009-04-14 3:40 ` Mark Levedahl
2009-04-14 4:20 ` Junio C Hamano
2009-04-14 11:36 ` Jakub Narebski
2009-04-15 18:00 ` Jeff King
2009-04-15 17:58 ` Jeff King
2009-04-13 10:57 ` [PATCH] builtin-branch - allow deleting a fully specified branch-name Jeff King
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=7vmyakh5wc.fsf@gitster.siamese.dyndns.org \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
--cc=mlevedahl@gmail.com \
--cc=peff@peff.net \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).