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

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?

From
Ddemerphq <demerphq@gmail.com>
Date
Jul 29, 2009, 09:51 UTC
Message-ID
<9b18b3110907290251t4d8c83d3rf12d0ea9268c19bd@mail.gmail.com>
In-Reply-To
<adf1fd3d0907290233y78514f98h89a2fca7bf68b4f2@mail.gmail.com>
2009/7/29 Santi Béjar <santi@agolina.net>:
Show 20 quoted lines
> 2009/7/29 demerphq <demerphq@gmail.com>:
>> 2009/7/29 Santi Béjar <santi@agolina.net>:
>>> 2009/7/29 demerphq <demerphq@gmail.com>:
>>>> 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/"
Previous: Santi BéjarNext: Santi Béjar
Message 6 of 14 in “Adding files to a git-archive when it is generated, and whats the best way to find out what branch a commit is on?”
  1. demerphqJul 29, 2009
  2. Avery PennarunJul 29, 2009
  3. Santi BéjarJul 29, 2009
  4. demerphqJul 29, 2009
  5. Santi BéjarJul 29, 2009
  6. demerphqJul 29, 2009
  7. Santi BéjarJul 29, 2009
  8. René ScharfeJul 30, 2009
  9. demerphqJul 31, 2009
  10. René ScharfeAug 2, 2009
  11. demerphqAug 2, 2009
  12. René ScharfeAug 4, 2009
  13. Jeff EplerJul 29, 2009
  14. demerphqJul 31, 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.