Re: [PATCH] Add new @ shortcut for HEAD
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Apr 30, 2013, 17:22 UTC
- Message-ID
- <7vppxcdjd1.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <CACsJy8D_gPpprETkAxf+eYp5DMt7uVt6nanCwthZO=vVfBT28Q@mail.gmail.com>
Duy Nguyen <pclouds@gmail.com> writes:
Show 16 quoted lines
> On Tue, Apr 30, 2013 at 2:35 AM, Felipe Contreras
> <felipe.contreras@gmail.com> wrote:
>> So we can type '@' instead of 'HEAD@', or rather 'HEAD'. So now we can
>> use 'git show @~1', and all that goody goodness.
>
> I like this. I haven't spent a lot of time on thinking about
> ambiguation. But I think we're safe there. '@' is not overloaded much
> like ':', '^' or '~'.
>
>> This patch allows 'HEAD@' to be the same as 'HEAD@{0}', and similarly with
>> 'master@'.
>
> I'm a bit reluctant to this. It looks like incomplete syntax to me as
> '@' has always been followed by '{'. Can we have the lone '@' candy
> but reject master@ and HEAD@? There's no actual gain in writing
> master@ vs master@{0}.Originally I was going to say the same, but after thinking about it a bit more, I changed my mind.
If you accept only "@" but not "master@", that behaviour needs a wrong world model to understand and justify (one of which is "@ is a synonym for HEAD"). If your rule is "In $anything@{$n}, you can drop {$n} when $n==0", then HEAD@{0} becomes HEAD@ and master@{0} becomes master@, and @{0} becomes @ naturally.
We should make sure that the code rejects "git update-ref @ foo" because that is "git update-ref @{0} ref", by the way. I didn't check with Felipe's patch.
>> +'@':: >> + '@' alone is a shortcut for 'HEAD' >> +
I think this explanation sends a wrong message, hinting as if you can expect "update-ref @ master", "symbolic-ref @ refs/heads/next" etc. to do something sensible to HEAD.
Felipe's original justification in the log message "I want to drop {0}" sounds closer to what is going on here.