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
88a8b7955666ed8fa5924fadbb3bb58984eaa6afNow 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~16However.
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.