From: Junio C Hamano <gitster@pobox.com>
To: Jeff King <peff@peff.net>
Cc: "Martin von Zweigbergk" <martin.von.zweigbergk@gmail.com>,
"Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>,
git@vger.kernel.org
Subject: Re: bug? in checkout with ambiguous refnames
Date: Sat, 08 Jan 2011 23:31:18 -0800 [thread overview]
Message-ID: <7v1v4m8reh.fsf@alter.siamese.dyndns.org> (raw)
In-Reply-To: <20110108214011.GA4753@sigill.intra.peff.net> (Jeff King's message of "Sat\, 8 Jan 2011 16\:40\:11 -0500")
Jeff King <peff@peff.net> writes:
> On Sat, Jan 08, 2011 at 03:40:33PM -0500, Martin von Zweigbergk wrote:
>
>> > Yeah, we generally resolve ambiguities in favor of the tag (and that
>> > warning comes from deep within get_sha1_basic). So the real bug here is
>> > that it still said "Switched to branch", which is totally wrong.
>> >
>> > That being said, it probably would make more sense for "git checkout" to
>> > prefer branches to tags.
>>
>> What was the rationale for generally favoring tags?
>
> I don't recall hearing any specific argument, but it has always been
> that way from early on. I think it is from a vague sense of "tags are
> more important than branch tips because they are about marking specific
> points, not lines of development". But maybe other old-timers can say
> more.
>
> I don't necessarily buy that argument; my only reasoning is that we
> should probably keep historic behavior.
I don't think "tags are more important" has ever been a serious argument,
either. We prefix refs/tags/ and refs/heads/ to see if what the user gave
us is a short hand, and we have to pick one to check first, and we
happened to have chosen to check tags/ before heads/. Majority of people
have been trained by the ambiguity warning not to use the same name for
their tags and branches, and the rest have learned to live with this
convention.
Among those "rest who have learned to live with" minority are people who
use v1.0 branch to maintain v1.0 codebase after it is tagged, and they
would want to work on v1.0 branch (by checking out v1.0 branch) and
measure their progress by disambiguating between heads/v1.0 and tags/v1.0
when driving "git log" family. There is no strong reason to forbid them
from doing this by requiring uniqueness if that is what they want,
although I personally would suggest them to use maint-1.0 branch that
forks from v1.0 tag.
Aside from your "'checkout branch' is about checking out a branch"
explanation, there are two reasons to favor branches over tags in
"checkout" command:
(1) You cannot disambiguate "git checkout heads/master" when you have
"master" tag, as this notation is used to tell the command "I want to
detach HEAD at that commit"; and
(2) The command already treats an unadorned branch name specially by not
complaining ref/path ambiguity when you said "git checkout master"
and you have a file called "master" in your working tree, so users
already expect that an unadorned branch name is special to it.
next prev parent reply other threads:[~2011-01-09 7:31 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-01-07 10:46 bug? in checkout with ambiguous refnames Uwe Kleine-König
2011-01-07 19:44 ` Junio C Hamano
2011-01-07 19:49 ` Jeff King
2011-01-07 19:54 ` Jeff King
2011-01-07 22:50 ` Junio C Hamano
2011-01-07 23:17 ` Junio C Hamano
2011-01-11 6:52 ` Jeff King
2011-01-11 17:02 ` Junio C Hamano
2011-01-11 18:02 ` Jeff King
2011-01-12 1:25 ` Jeff King
2011-01-12 9:07 ` Junio C Hamano
2011-01-12 17:27 ` Jeff King
2011-01-11 6:55 ` Jeff King
2011-01-11 19:20 ` Jeff King
2011-01-11 20:00 ` Jeff King
2011-01-08 20:40 ` Martin von Zweigbergk
2011-01-08 21:40 ` Jeff King
2011-01-09 2:43 ` Martin von Zweigbergk
2011-01-09 7:31 ` Junio C Hamano [this message]
2011-01-09 16:18 ` Martin von Zweigbergk
2011-01-12 9:11 ` Uwe Kleine-König
2011-01-12 17:46 ` Jeff King
2011-01-12 18:19 ` Uwe Kleine-König
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=7v1v4m8reh.fsf@alter.siamese.dyndns.org \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
--cc=martin.von.zweigbergk@gmail.com \
--cc=peff@peff.net \
--cc=u.kleine-koenig@pengutronix.de \
/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).