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

Re: [PATCH v2 1/2] for-each-repo: optionally keep going on an error

From
Jeff King <peff@peff.net>
Date
Apr 19, 2024, 17:56 UTC
Message-ID
<20240419175621.GB14309@coredump.intra.peff.net>
In-Reply-To
<xmqqy199l4qf.fsf@gitster.g>
On Fri, Apr 19, 2024 at 09:03:20AM -0700, Junio C Hamano wrote:
Show 19 quoted lines
> You mean that it could be a regression that we lose the raw return
> value from run_command_on_repo() when !keep_going?
> 
>  - git.c:handle_builtin() does exit(run_builtin(builtin, argc, argv));
>    In this case, builtin is set to cmd_for_each_repo.
> 
>  - cmd_for_each_repo does "return result" at its end.
> 
>  - result comes from run_command_on_repo(), which returns the value
>    returned by run_command().
> 
>  - run_command() returns -1 for "not found".
> 
> So if run_command() failed due to missing command, we would have
> exited with 255 (= (unsigned)(-1) & 0xFF), but with this change we
> would now exit with 1.
> 
> Passing anything outside 0..255 to exit(3) is a bad manners, and but
> this does change behaviour.  Hmmm.

run_command() may also return the exit code of the program run. So imagine a setup like:

  git init
  git config alias.foo '!exit 123'
  git config repo.paths "$PWD"
  git for-each-repo --config=repo.paths foo
  echo $?
Before the patch we see "123" and after we see "1".

I do agree that passing -1 to exit is bad; we maybe should normalize to 127 for not found, though I think we could also see -1 for system errors like fork() failing.

-Peff
Previous: Junio C HamanoNext: Junio C Hamano
Message 12 of 19 in “Use a "best effort" strategy in scheduled maintenance”
  1. 0/2 Use a "best effort" strategy in scheduled maintenanceJohannes Schindelin via GitGitGadget, Apr 17, 2024
  2. 1/2 for-each-repo: optionally keep going on an errorJohannes Schindelin via GitGitGadget, Apr 17, 2024
  3. Eric SunshineApr 17, 2024
  4. Junio C HamanoApr 17, 2024
  5. 2/2 maintenance: running maintenance should not stop on errorsJohannes Schindelin via GitGitGadget, Apr 17, 2024
  6. Junio C HamanoApr 17, 2024
  7. Junio C HamanoApr 17, 2024
  8. 0/2 Use a "best effort" strategy in scheduled maintenanceJohannes Schindelin via GitGitGadget, Apr 18, 2024
  9. 1/2 for-each-repo: optionally keep going on an errorJohannes Schindelin via GitGitGadget, Apr 18, 2024
  10. Patrick SteinhardtApr 19, 2024
  11. Junio C HamanoApr 19, 2024
  12. Jeff KingApr 19, 2024
  13. Junio C HamanoApr 22, 2024
  14. 2/2 maintenance: running maintenance should not stop on errorsJohannes Schindelin via GitGitGadget, Apr 18, 2024
  15. 0/2 Use a "best effort" strategy in scheduled maintenanceJohannes Schindelin via GitGitGadget, Apr 24, 2024
  16. 1/2 for-each-repo: optionally keep going on an errorJohannes Schindelin via GitGitGadget, Apr 24, 2024
  17. Junio C HamanoApr 24, 2024
  18. 2/2 maintenance: running maintenance should not stop on errorsJohannes Schindelin via GitGitGadget, Apr 24, 2024
  19. Patrick SteinhardtApr 25, 2024

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.