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
Patrick Steinhardt <ps@pks.im>
Date
Apr 19, 2024, 04:24 UTC
Message-ID
<ZiHyGFRPm_pwdGgC@tanuki>
In-Reply-To
<abd796894c857fc9ad96b9942089474df01f0506.1713444783.git.gitgitgadget@gmail.com>
On Thu, Apr 18, 2024 at 12:53:02PM +0000, Johannes Schindelin via GitGitGadget wrote:
> From: Johannes Schindelin <johannes.schindelin@gmx.de>
[snip]
Show 9 quoted lines
> @@ -55,8 +58,9 @@ int cmd_for_each_repo(int argc, const char **argv, const char *prefix)
>  	else if (err)
>  		return 0;
>  
> -	for (i = 0; !result && i < values->nr; i++)
> -		result = run_command_on_repo(values->items[i].string, argc, argv);
> +	for (i = 0; (keep_going || !result) && i < values->nr; i++)
> +		if (run_command_on_repo(values->items[i].string, argc, argv))
> +			result = 1;

One thing that made me stop and think is whether the change in behaviour here may negatively impact some usecases. Before this change we would error out with the return code returned by the command that we have ran in repositories. It makes total sense that we don't do that anymore with `--keep-going`, because the result would likely be useless as all we could do was to OR the result codes with each other.

But do we maybe want to make this conditional on whether or not the `--keep-going` flag is set? So something like this:

```
for (i = 0; (keep_going || !result) && i < values->nr; i++) {
	int ret = run_command_on_repo(values->items[i].string, argc, argv);
	if (ret)
		result = keep_going ? 1 : ret;
}
```
Other than that this patch series looks good to me.
Patrick
Previous: Johannes Schindelin via GitGitGadgetNext: Junio C Hamano
Message 10 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.