git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v2 2/2] Teach @{-1} to git merge

From
Johannes Schindelin <johannes.schindelin@gmx.de>
Date
Feb 15, 2009, 11:21 UTC
Message-ID
<alpine.DEB.1.00.0902151212320.10279@pacific.mpi-cbg.de>
In-Reply-To
<7vfxigqwsp.fsf@gitster.siamese.dyndns.org>
Hi,
On Sat, 14 Feb 2009, Junio C Hamano wrote:
Show 8 quoted lines
> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
> 
> > - update-ref does _not_ interpret @{-<n>} as the branch name (which I 
> >   find okay, as update-ref is plumbing), but instead creates the file 
> >   '.git/@{-<n>}' (which I think is a bug).
> 
> I do not think it make any sense for update-ref to expand @{-1} to the
> name of the last branch,
As I said, I find the behavior okay.
Show 5 quoted lines
> The particular plumbing command, following the example of recent 
> loosening the rule back to "HEAD is allowed to point outside 
> refs/heads/", should be allowed to create anything that passes 
> check_ref_format(), and perhaps bit more because we would need to allow 
> ".git/HEAD".
That was what I was referring to when talking about a bug.
Show 9 quoted lines
> > Now, show-branch indeed does not substitute the branch _name_, but 
> > otherwise it works correctly, no?
> > otherwise it works correctly, no?  And given the fact that show-branch 
> > does not substitute "HEAD" with the current branch name, either,...
> 
> The tip commits come from get_sha1(), so obviously it would "work", but it
> does not show what branch it talks about.  HEAD is shown only when the
> user says HEAD (e.g. "git show-branch master HEAD") so I do not see much
> similarity there.

Well, it _is_ a substitution. If you ask for "HEAD", you get "HEAD". As a new user, if passing "@{-2}" to show-branch would not show "@{-2}", but DWIM the branch name, I would expect, really, that passing "HEAD" does the same sort of DWIMming for me.

In the name of consistency, I'd rather leave show-branch as it is.

However, IMO there is a much worse issue lurking: people might want to _know_ what "@{-2}" would expand to, _without_ switching branches. At the moment, I can only think of

	git show -s --decorate --pretty=format:%d @{-2}
which is
- convoluted (I would not expect _any_ new user to think of this),
- wrong (it shows all the refs that point to the commit, not only the one 
  we wanted to find out).

And no, do not suggest using "git rev-parse --symbolic-full-name @{-2}", you know exactly what I think of teaching new users plumbing, and you know I am right in this respect.

Ciao, Dscho

Previous: Junio C HamanoNext: Junio C Hamano
Message 11 of 21 in “teach the new "@{-1} syntax to "git branch"”
  1. teach the new "@{-1} syntax to "git branch"Junio C Hamano, Feb 14, 2009
  2. Jay SoffianFeb 14, 2009
  3. Junio C HamanoFeb 14, 2009
  4. 1/2 Teach the "@{-1} syntax to "git branch"Junio C Hamano, Feb 14, 2009
  5. 2/2 Teach @{-1} to git mergeJunio C Hamano, Feb 14, 2009
  6. Johannes SchindelinFeb 14, 2009
  7. Junio C HamanoFeb 15, 2009
  8. Junio C HamanoFeb 15, 2009
  9. Nanako ShiraishiFeb 15, 2009
  10. Junio C HamanoFeb 15, 2009
  11. Johannes SchindelinFeb 15, 2009
  12. Junio C HamanoFeb 16, 2009
  13. Johannes SchindelinFeb 16, 2009
  14. Jay SoffianFeb 16, 2009
  15. Junio C HamanoFeb 26, 2009
  16. Johannes SchindelinFeb 26, 2009
  17. Deskin MillerFeb 27, 2009
  18. Junio C HamanoFeb 27, 2009
  19. git-branch: a detached HEAD and branch called HEAD are differentJunio C Hamano, Feb 27, 2009
  20. "git branch -M @{-1}"Junio C Hamano, Feb 27, 2009
  21. Junio C HamanoFeb 27, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.