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

Re: [PATCH 3/3] bisect: make diff-tree output prettier

From
Jeff King <peff@peff.net>
Date
Feb 23, 2019, 13:44 UTC
Message-ID
<20190223134452.GE22403@sigill.intra.peff.net>
In-Reply-To
<xmqqsgwfr9vr.fsf@gitster-ct.c.googlers.com>
On Fri, Feb 22, 2019 at 09:49:44AM -0800, Junio C Hamano wrote:
Show 9 quoted lines
> > Even though bisect might be driven by scripts, there's no reason to
> > consider this part of the output as machine-readable (if anything, the
> > initial "$hash is the first bad commit" might be parsed, but we won't
> > touch that here). Let's make it prettier and more informative for a
> > human reading the output.
> 
> Sounds very sensible.  One potential point that makes me worried is
> this move might tempt people to make the output even larger (e.g. a
> full diff with "--patch" is overkill if done unconditionally).

Yeah, I agree that would be overkill. What I have here isn't actually much bigger. It mostly trades one line of --raw for one line of --stat. The big change is that we actually bother to recurse, but I think the old behavior was just buggy.

At any rate, I think we can discuss such a patch if and when it comes up.

Show 16 quoted lines
> > If we do care about the change in exit code from bisect, then it
> > probably does make sense to go with an external process. Then it can
> > happily die on the corruption, while bisect continues with the rest of
> > the high-level operation. I'm not sure it really matters much, though.
> > Once your repository is corrupted, all bets are off. It's nice that we
> > can bisect in such a state at all.
> 
> This is about showing the very final message after finding which one
> is the culprit.  Is there any other "clean-up" action we need to do
> after showing the message?  I do not care too much about the exit
> code from the bisection, but if dying from diff-tree can interfere
> with such a clean-up, that would bother me a lot more, and at that
> point, given especially that this is not a performance sensitive
> thing at all (it is not even invoked log(n) times---just once at the
> end), moving to external process may make it a lot simpler and
> cleaner.

Thanks, I had a vague feeling along these lines, but you nicely put it into words. As far as I can tell, no, we're not missing any important cleanup in that process; it looks like the only call to show_diff_tree() then calls exit(10) immediately after.

However, that does change our exit code, which git-bisect.sh then propagates instead of writing the entry into the BISECT_LOG.

I'm still not convinced this is really worth caring about, as it implies a corrupt repo. But if we did want to fix it, then I think the external diff-tree would still be the right thing (since it's hard for git-bisect.sh to tell the different between this death and another one).

-Peff
Previous: Junio C HamanoNext: Christian Couder
Message 10 of 14 in “git bisect - good vs bad output is different.”
  1. Bartosz BaranowskiFeb 21, 2019
  2. Junio C HamanoFeb 21, 2019
  3. 0/3 prettier bisect outputJeff King, Feb 22, 2019
  4. 1/3 bisect: use string arguments to feed internal diff-treeJeff King, Feb 22, 2019
  5. 2/3 bisect: fix internal diff-tree config loadingJeff King, Feb 22, 2019
  6. Christian CouderMar 3, 2019
  7. Jeff KingMar 5, 2019
  8. 3/3 bisect: make diff-tree output prettierJeff King, Feb 22, 2019
  9. Junio C HamanoFeb 22, 2019
  10. Jeff KingFeb 23, 2019
  11. Christian CouderMar 3, 2019
  12. Junio C HamanoFeb 22, 2019
  13. Christian CouderMar 3, 2019
  14. Jeff KingMar 5, 2019

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.