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

Re: Testing if a certain commit is in the current branch

From
FPFrans Pop <elendil@planet.nl>
Date
Jan 27, 2010, 15:27 UTC
Message-ID
<201001271627.45715.elendil@planet.nl>
In-Reply-To
<20100127150834.GG9553@machine.or.cz>
On Wednesday 27 January 2010, Petr Baudis wrote:
Show 7 quoted lines
> > Great! If the commit ID is not present that only takes 1 sec versus 11
> > secs for my test. (If the commit _is_ present and fairly recent my
> > test can be faster, but 11 secs delay when it's not present hurts
> > more.)
>
> Isn't something very wrong if grepping the log output is faster than
> simple merge-base call? Can you post exact numbers?

It's only faster if the commit is present very early in the log. The reason is probably that because of the '-q' option it does not actually read the full log, but breaks out as soon as it's found a match.

In my test I had an elapsed time of ~0.5 sec (versus 1 sec for Junio's test). And here's a grep for the very first commit:

$ time git log --pretty=format:%H | grep -q 48404cb50b0b547

real 0m0.010s user 0m0.000s sys 0m0.012s

Previous: Petr BaudisNext: Matthieu Moy
Message 9 of 12 in “Testing if a certain commit is in the current branch”
  1. Frans PopJan 27, 2010
  2. Junio C HamanoJan 27, 2010
  3. Frans PopJan 27, 2010
  4. Jonathan NiederJan 27, 2010
  5. Frans PopJan 27, 2010
  6. Dale FarnsworthJan 27, 2010
  7. Frans PopJan 27, 2010
  8. Petr BaudisJan 27, 2010
  9. Frans PopJan 27, 2010
  10. Matthieu MoyJan 27, 2010
  11. Frans PopJan 27, 2010
  12. Johannes SchindelinJan 27, 2010

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.