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

Re: [PATCH v7 00/13] Finish converting git bisect to C part 2

From
Miriam R. <mirucam@gmail.com>
Date
Sep 24, 2020, 12:56 UTC
Message-ID
<CAN7CjDBSn1FoTFEeqEaGJuSaiUAvjoWZHd6GkmOO5UW8p9ho_w@mail.gmail.com>
In-Reply-To
<nycvar.QRO.7.76.6.2009232316570.5061@tvgsbejvaqbjf.bet>
Hi Johannes,

El mié., 23 sept. 2020 a las 23:23, Johannes Schindelin (<Johannes.Schindelin@gmx.de>) escribió:

Show 61 quoted lines
>
> Hi Miriam,
>
> On Wed, 23 Sep 2020, Johannes Schindelin wrote:
>
> > On Wed, 23 Sep 2020, Miriam R. wrote:
> >
> > > Applying some of your suggestions related to removing some 'eval' in
> > > git-bisect shell script, a bug has appeared. It seems it is related to
> > > a previous code merged before my internship.
> >
> > Now you got me curious: what bug did you see?
>
> I found your fork and ran the test, and this is the first symptom:
>
> -- snip --
> [...]
> ++ git bisect skip
> Bisecting: 1 revision left to test after this (roughly 1 step)
> [32a594a3fdac2d57cf6d02987e30eec68511498c] Add <4: Ciao for now> into <hello>.
> ++ git bisect good
> ++ grep '3082e11d3a0f2edca194c8ce1eb802256e38e75e is the first bad commit' my_bisect_log.txt
> 3082e11d3a0f2edca194c8ce1eb802256e38e75e is the first bad commit
> ++ git bisect log
> ++ git bisect reset
> Previous HEAD position was 32a594a Add <4: Ciao for now> into <hello>.
> Switched to branch 'other'
> ok 22 - bisect skip: add line and then a new test
>
> expecting success of 6030.23 'bisect skip and bisect replay':
>         git bisect replay log_to_replay.txt > my_bisect_log.txt &&
>         grep "$HASH5 is the first bad commit" my_bisect_log.txt &&
>         git bisect reset
>
> ++ git bisect replay log_to_replay.txt
> error: update_ref failed for ref 'refs/bisect/bad': cannot update ref 'refs/bisect/bad': trying to write ref 'refs/bisect/bad' with nonexistent object 10006d020000000068986d020000000054f65f00
> error: last command exited with $?=1
> not ok 23 - bisect skip and bisect replay
> #
> #               git bisect replay log_to_replay.txt > my_bisect_log.txt &&
> #               grep "$HASH5 is the first bad commit" my_bisect_log.txt &&
> #               git bisect reset
> -- snap --
>
> So I dug a little bit further (and applied Christian's patch in the
> meantime), and it turns out that the `eval` has nothing to do with what I
> originally thought it would be required for: I thought that it wanted to
> prevent `exit` calls from actually exiting the script.
>
> Instead, those `eval` calls are required because the arguments are
> provided in quoted form. For example, during the execution of t6030.68,
> the `eval` would expand the call
>
>         eval "git bisect--helper --bisect-start $rev $tail"
>
> to
>
>         git bisect--helper --bisect-start '--term-old' 'term2' '--term-new' 'term1'
>
> Therefore, the `eval` really needs to stay in place (also the other `eval`
> I had originally suggested to remove, for the same reason).
Ok, I will recover your other suggestions too.
Show 6 quoted lines
>
> I would still recommend appending `|| exit`, even if it just so happens
> that we will eventually abort when the `bisect--helper` command failed
> anyway, because the next command will then fail, and abort. But it's
> cleaner to abort already when this invocation failed rather than relying
> on that side effect.

Aha.Ok Best, Miriam

>
> Ciao,
> Dscho
>
Previous: Miriam R.
Message 27 of 27 in “Finish converting git bisect to C part 2”
  1. 00/13 Finish converting git bisect to C part 2Miriam Rubio, Aug 31, 2020
  2. 01/13 bisect--helper: BUG() in cmd_*() on invalid subcommandMiriam Rubio, Aug 31, 2020
  3. 02/13 bisect--helper: use '-res' in 'cmd_bisect__helper' returnMiriam Rubio, Aug 31, 2020
  4. 03/13 bisect--helper: introduce new `write_in_file()` functionMiriam Rubio, Aug 31, 2020
  5. 04/13 bisect--helper: reimplement `bisect_autostart` shell function in CMiriam Rubio, Aug 31, 2020
  6. Johannes SchindelinSep 3, 2020
  7. 05/13 bisect: call 'clear_commit_marks_all()' in 'bisect_next_all()'Miriam Rubio, Aug 31, 2020
  8. 08/13 bisect--helper: retire `--bisect-clean-state` subcommandMiriam Rubio, Aug 31, 2020
  9. 13/13 bisect--helper: retire `--bisect-autostart` subcommandMiriam Rubio, Aug 31, 2020
  10. 11/13 bisect--helper: retire `--check-expected-revs` subcommandMiriam Rubio, Aug 31, 2020
  11. 12/13 bisect--helper: retire `--write-terms` subcommandMiriam Rubio, Aug 31, 2020
  12. 10/13 bisect--helper: reimplement `bisect_state` & `bisect_head` shell functions in CMiriam Rubio, Aug 31, 2020
  13. Johannes SchindelinSep 3, 2020
  14. 09/13 bisect--helper: retire `--next-all` subcommandMiriam Rubio, Aug 31, 2020
  15. 07/13 bisect--helper: finish porting `bisect_start()` to CMiriam Rubio, Aug 31, 2020
  16. Johannes SchindelinSep 3, 2020
  17. 06/13 bisect--helper: reimplement `bisect_next` and `bisect_auto_next` shell functions in CMiriam Rubio, Aug 31, 2020
  18. Johannes SchindelinSep 3, 2020
  19. Johannes SchindelinSep 3, 2020
  20. Miriam R.Sep 23, 2020
  21. Johannes SchindelinSep 23, 2020
  22. Johannes SchindelinSep 23, 2020
  23. Christian CouderSep 24, 2020
  24. Johannes SchindelinSep 24, 2020
  25. Christian CouderSep 24, 2020
  26. Miriam R.Sep 24, 2020
  27. Miriam R.Sep 24, 2020

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.