Thread (13 messages) 13 messages, 5 authors, 2016-06-15

Re: Adding files to a git-archive when it is generated, and whats the best way to find out what branch a commit is on?

flat view

From: demerphq <hidden>
Date: 2016-06-15 22:47:07

2009/7/29 Santi Béjar [off-list ref]:
2009/7/29 demerphq [off-list ref]:
quoted
2009/7/29 Santi Béjar [off-list ref]:
quoted
2009/7/29 demerphq [off-list ref]:
quoted
Another question is whether anyone has any advice on the best way to
find out the "best" branch an arbitrary commit is on. Where best can
be flexibly definied to handle commits that are reachable from
multiple branches.  I have hacked a solution involving git-log and
grep, but it performs quite poorly. I was wondering if there is a
better solution.
The "best" tag is easy: git describe commit. For branches I think you
could use "git name-ref --refs=refs/heads/* commit", because git
describe does not have a --branches flag.
Dang, I guess this is from a newer release than mine. So now i have an
excuse to upgrade.
No, it is quite old (the --refs flag since the v1.5.1). If the problem
is that you don't find the "git name-ref" command is because it is
"git name-rev", oops.
Dang, guess i need a different excuse. :-)

But it doesn't seem to do what i need:

$ git name-rev --refs=refs/heads/* faa7dc9f4d3a618b0ad8b3c95edd54e24c6976e7
faa7dc9f4d3a618b0ad8b3c95edd54e24c6976e7 undefined

But i think that just because in this case I need remote refs:

git name-rev --refs=refs/remotes/* faa7dc9f4d3a618b0ad8b3c95edd54e24c6976e7
faa7dc9f4d3a618b0ad8b3c95edd54e24c6976e7 remotes/origin/maint-5.005~25

Which is definitely better. Can I safely strip the ~25 off the end to
get the real branch name?

BTW, this is the shell version of what I'm currently using:

$ for b in $(git branch -r); do git log --pretty='format:%H' $b | grep
faa7dc9f4d3a618b0ad8b3c95edd54e24c6976e7 && echo $b; done
faa7dc9f4d3a618b0ad8b3c95edd54e24c6976e7
origin/maint-5.005

The main difference with the real code I use (in perl) is that I can
specify the order of the branches to be searched, so that I can ensure
that if its on two it is reported to be "from" the most likely
candidate. And of course the perl version I use stops searching as
soon as it finds a match.

Anyway, if I can reliably strip off the ~25 then this is a big step
forward for me.

Thanks Santi, and of course thanks Johannes (author of name-rev).

cheers,
Yves

-- 
perl -Mre=debug -e "/just|another|perl|hacker/"
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help