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

Re: [PATCH v3 0/3] automatically skip away from broken commits

From
HAH. Peter Anvin <hpa@zytor.com>
Date
Jun 9, 2009, 22:54 UTC
Message-ID
<4A2EE825.1020200@zytor.com>
In-Reply-To
<200906092355.51244.jnareb@gmail.com>
Jakub Narebski wrote:
> 
> Let us also assume that we have some model of probability that a commit
> is untestable. In the example below numbers are ad hoc, and unrealistic.
> 

What I mostly meant was that there simply is no such model that will be ideal (since we simply don't have that information, almost by definition), so therefore the overall algorithm can't be ideal, either.

However, Christian and you do make a very good point that instead of a linear-probability random selection, it probably makes sense to bias the randomness in favor of the commits that are more likely to provide higher information gain. This is effectively what Christian's patch does in a somewhat clumsy way.

One of the nice things about combining a random algorithm with bias is that the bias doesn't have to be perfect, it just have to be good enough. For example, we can take dramatic shortcuts like not taking topology into accounts.

A logical bias function would indeed be an estimate of the information gain. One way we can calculate the effective information gain is by take the list in "goodness order" that we already have, and treat it as if it had originally been a linear history -- this will usually not be the case, but we're probabilistically getting away with murder here.

The sorting in "goodness order" of a linear history means sorting middlemost first, so the modified information density function with x being the position in the list (x = 0 for best, x = 1 for worst) looks like:

- 1/(2 ln 2) * [ (1-x) ln (1-x) + (1+x) ln (1+x) - 2 ln 2 ]

I'd have to brush up some more of my calculus in order to remember how to come up with a transformation function which would take a random number and give us this exact probability distribution, but again, I don't think it's hugely important; I suspect any function which gives us a probability distribution that's even in the right neighborhood would give us excellent results.

	-hpa
Previous: Jakub NarebskiNext: Christian Couder
Message 16 of 37 in “automatically skip away from broken commits”
  1. 0/3 automatically skip away from broken commitsChristian Couder, Jun 6, 2009
  2. 1/3 bisect: add parameters to "filter_skipped"Christian Couder, Jun 6, 2009
  3. 2/3 bisect: when skipping, choose a commit away from a skipped commitChristian Couder, Jun 6, 2009
  4. 3/3 t6030: test skipping away from an already skipped commitChristian Couder, Jun 6, 2009
  5. Junio C HamanoJun 6, 2009
  6. Christian CouderJun 7, 2009
  7. H. Peter AnvinJun 8, 2009
  8. Junio C HamanoJun 8, 2009
  9. H. Peter AnvinJun 8, 2009
  10. Junio C HamanoJun 8, 2009
  11. H. Peter AnvinJun 8, 2009
  12. Christian CouderJun 9, 2009
  13. Jakub NarebskiJun 9, 2009
  14. H. Peter AnvinJun 9, 2009
  15. Jakub NarebskiJun 9, 2009
  16. H. Peter AnvinJun 9, 2009
  17. Christian CouderJun 9, 2009
  18. H. Peter AnvinJun 9, 2009
  19. Junio C HamanoJun 9, 2009
  20. H. Peter AnvinJun 9, 2009
  21. Christian CouderJun 9, 2009
  22. H. Peter AnvinJun 9, 2009
  23. Christian CouderJun 10, 2009
  24. Junio C HamanoJun 9, 2009
  25. Christian CouderJun 10, 2009
  26. Junio C HamanoJun 10, 2009
  27. H. Peter AnvinJun 10, 2009
  28. Christian CouderJun 11, 2009
  29. H. Peter AnvinJun 11, 2009
  30. H. Peter AnvinJun 11, 2009
  31. Christian CouderJun 12, 2009
  32. H. Peter AnvinJun 13, 2009
  33. Jakub NarebskiJun 13, 2009
  34. H. Peter AnvinJun 13, 2009
  35. Christian CouderJun 15, 2009
  36. H. Peter AnvinJun 15, 2009
  37. Christian CouderJun 13, 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.