Thread (9 messages) flat view 9 messages, 4 authors, 2016-06-15

Re: [PATCH] Add new @ shortcut for HEAD

From: Junio C Hamano <hidden>
Date: 2016-06-15 22:57:04

Duy Nguyen [off-list ref] writes:
On Tue, Apr 30, 2013 at 2:35 AM, Felipe Contreras
[off-list ref] wrote:
quoted
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 '~'.
quoted
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.
quoted
+'@'::
+  '@' 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.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help