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

Re: How to find a revision's branch name

From
Junio C Hamano <junkio@cox.net>
Date
Mar 18, 2006, 06:37 UTC
Message-ID
<7vfylgz29x.fsf@assigned-by-dhcp.cox.net>
In-Reply-To
<e5bfff550603172202ia4b69f2he5562b826e491426@mail.gmail.com>
Marco Costalba <mcostalba@gmail.com> writes:
Show 5 quoted lines
> Is it possible to get branch name from a revision sha?
> Something like
>
> $ git branch b14e2494b8a70737066f4ade4df1b5559e81b44b
> todo
That is in general impossible.
        $ git show-branch master~1 next pu
        ! [master~1] blame: Nicer output
         ! [next] Merge branch 'jc/cvsimport' into next
          ! [pu] Merge branch 'jc/cvsimport' into next
        ---
         -- [next] Merge branch 'jc/cvsimport' into next
         ++ [next^2] cvsimport: honor -i and non -i upon subsequent
         imports
         -- [next^] Merge branch 'jc/fetch' into next
         ++ [next^^2] fetch: exit non-zero when fast-forward check
         fails.
         -- [next~2] Merge branch 'ew/abbrev' into next
         ++ [next~2^2] ls-files: add --abbrev[=<n>] option
         ++ [next~2^2^] ls-tree: add --abbrev[=<n>] option
         ++ [next^2^] blame: Fix git-blame <directory>
        +++ [master~1] blame: Nicer output
        $ git rev-parse --verify master~1
        88a8b7955666ed8fa5924fadbb3bb58984eaa6af
Now what should this command say?
        $ git branch --tell 88a8b7955666ed8fa5924fadbb3bb58984eaa6af

It is not head of any branch. Should it say master~1? next^2~1? pu^2~1?

The closest thing is name-rev, which tries to give you the simplest. It may or may not match what you want:

        $ git name-rev 88a8b7955666ed8fa5924fadbb3bb58984eaa6af
        88a8b7955666ed8fa5924fadbb3bb58984eaa6af master~1
        $ git name-rev `git rev-parse --verify b14e24`
        b14e2494b8a70737066f4ade4df1b5559e81b44b todo~16
However.
Show 8 quoted lines
> I need this to correctly annotate files not in HEAD
> tree. Currently qgit runs git-rev-list --header --topo-order
> --parents --remove-empty HEAD -- <path>
>
> to get a file history. But this fails if <path> is not found
> in HEAD. The right command to run in our case should be:
> git-rev-list --header --topo-order --parents --remove-empty
> todo -- <path>
... I wonder why you care.  Wouldn't this work just as well?
	$ git rev-list --header --topo-order --parents --remove-empty \
	  --all -- <path>
It lists 70 commits at the moment.
Previous: Marco CostalbaNext: Marco Costalba
Message 2 of 4 in “How to find a revision's branch name”
  1. Marco CostalbaMar 18, 2006
  2. Junio C HamanoMar 18, 2006
  3. Marco CostalbaMar 18, 2006
  4. Junio C HamanoMar 18, 2006

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.