From: Duy Nguyen Date: Tue, 30 Apr 2013 12:31:28 GMT Subject: Re: [PATCH] refs.c: interpret @ as HEAD Message-ID: In-Reply-To: <1367324685-22788-1-git-send-email-artagnon@gmail.com> On Tue, Apr 30, 2013 at 7:24 PM, Ramkumar Ramachandra wrote: > The rev spec forms @{}, .., ... fill in HEAD as the missing argument > automatically. Unfortunately, HEAD~ is a very common idiom and > there is no way to make HEAD implicit here (due the shell expansion of > ~). > > However, there is an alternative solution to the issue: overload the > character @ to mean HEAD. Do this at the lowest possible layer of > abstraction: in dwim_ref(), substitute @ with HEAD just before calling > resolve_ref_unsafe(). The program will only reach this point after > the other specs like ~, ^ and @{} have been resolved; therefore, it is > safe to do it here. > > This patch has the exact same effect as: > > $ git symbolic-ref @ HEAD > > It means that you can now do @~1, @^2, and even topic..@. However, > since the @-parsing happens before we ever reach the symref > resolution, @@{u} is invalid. But this is okay, since @{u} already > has an implicit HEAD in it. > > Inspired-by: Felipe Contreras > Inspired-by: Michael Haggerty > Signed-off-by: Ramkumar Ramachandra > --- > I haven't included documentation/ tests because I want feedback on > this two-liner first. You need more than that :) As Michael pointed out '@' is a perfectly valid ref name. If you do this, you need to reject '@' as invalid ref name. I guess another two lines in check_refname_format. But let's wait for more feedback first. -- Duy