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

Re: [PATCH v2 03/11] Start reporting missing commits in `repo_in_merge_bases_many()`

From
Junio C Hamano <gitster@pobox.com>
Date
Feb 24, 2024, 00:33 UTC
Message-ID
<xmqqle7asnu9.fsf@gitster.g>
In-Reply-To
<4dd214f91d4783f29b03908cc0034156253889a7.1708608110.git.gitgitgadget@gmail.com>

"Johannes Schindelin via GitGitGadget" <gitgitgadget@gmail.com> writes:

Show 11 quoted lines
> From: Johannes Schindelin <johannes.schindelin@gmx.de>
>
> Some functions in Git's source code follow the convention that returning
> a negative value indicates a fatal error, e.g. repository corruption.
>
> Let's use this convention in `repo_in_merge_bases()` to report when one
> of the specified commits is missing (i.e. when `repo_parse_commit()`
> reports an error).
>
> Also adjust the callers of `repo_in_merge_bases()` to handle such
> negative return values.

All of the above makes sense, but I have to wonder if this hunk should rather want to be part of the previous step:

Show 13 quoted lines
> @@ -486,10 +488,10 @@ int repo_in_merge_bases_many(struct repository *r, struct commit *commit,
>  	timestamp_t generation, max_generation = GENERATION_NUMBER_ZERO;
>  
>  	if (repo_parse_commit(r, commit))
> -		return ret;
> +		return ignore_missing_commits ? 0 : -1;
>  	for (i = 0; i < nr_reference; i++) {
>  		if (repo_parse_commit(r, reference[i]))
> -			return ret;
> +			return ignore_missing_commits ? 0 : -1;
>  
>  		generation = commit_graph_generation(reference[i]);
>  		if (generation > max_generation)

as this hunk is not about many callers of repo_in_merge_bases() that ignored the return values, which are all fixed by this patch, but about returning that error signal back to the caller.

Yes, I know you wrote in [02/11] that it does not change the behaviour, and if you move this hunk to [02/11], it might change the behaviour, but that is changing for the better. Besides, adding a parameter "ignore_missing" to the function only to be ignored until the next patch feels rather incomplete.

The other changes in this patch about its primary theme, fixing the callers that used to ignore return values of repo_in_merge_bases(), all looked sensible. This hunk somehow stood out like a sore thumb to me.

Previous: Johannes Schindelin via GitGitGadgetNext: Johannes Schindelin
Message 20 of 70 in “The merge-base logic vs missing commit objects”
  1. 00/12 The merge-base logic vs missing commit objectsJohannes Schindelin via GitGitGadget, Feb 13, 2024
  2. 01/12 paint_down_to_common: plug a memory leakJohannes Schindelin via GitGitGadget, Feb 13, 2024
  3. 02/12 Let `repo_in_merge_bases()` report missing commitsJohannes Schindelin via GitGitGadget, Feb 13, 2024
  4. Patrick SteinhardtFeb 15, 2024
  5. 03/12 Prepare `repo_in_merge_bases_many()` to optionally expect missing commitsJohannes Schindelin via GitGitGadget, Feb 13, 2024
  6. 04/12 Prepare `paint_down_to_common()` for handling shallow commitsJohannes Schindelin via GitGitGadget, Feb 13, 2024
  7. 05/12 commit-reach: start reporting errors in `paint_down_to_common()`Johannes Schindelin via GitGitGadget, Feb 13, 2024
  8. 06/12 merge_bases_many(): pass on errors from `paint_down_to_common()`Johannes Schindelin via GitGitGadget, Feb 13, 2024
  9. 07/12 get_merge_bases_many_0(): pass on errors from `merge_bases_many()`Johannes Schindelin via GitGitGadget, Feb 13, 2024
  10. 08/12 repo_get_merge_bases(): pass on errors from `merge_bases_many()`Johannes Schindelin via GitGitGadget, Feb 13, 2024
  11. 09/12 get_octopus_merge_bases(): pass on errors from `merge_bases_many()`Johannes Schindelin via GitGitGadget, Feb 13, 2024
  12. 10/12 repo_get_merge_bases_many(): pass on errors from `merge_bases_many()`Johannes Schindelin via GitGitGadget, Feb 13, 2024
  13. 11/12 repo_get_merge_bases_many_dirty(): pass on errors from `merge_bases_many()`Johannes Schindelin via GitGitGadget, Feb 13, 2024
  14. 12/12 paint_down_to_common(): special-case shallow/partial clonesJohannes Schindelin via GitGitGadget, Feb 13, 2024
  15. Junio C HamanoFeb 13, 2024
  16. 00/11 The merge-base logic vs missing commit objectsJohannes Schindelin via GitGitGadget, Feb 22, 2024
  17. 01/11 paint_down_to_common: plug two memory leaksJohannes Schindelin via GitGitGadget, Feb 22, 2024
  18. 02/11 Prepare `repo_in_merge_bases_many()` to optionally expect missing commitsJohannes Schindelin via GitGitGadget, Feb 22, 2024
  19. 03/11 Start reporting missing commits in `repo_in_merge_bases_many()`Johannes Schindelin via GitGitGadget, Feb 22, 2024
  20. Junio C HamanoFeb 24, 2024
  21. Johannes SchindelinFeb 26, 2024
  22. Junio C HamanoFeb 26, 2024
  23. Jeff KingMar 1, 2024
  24. 04/11 Prepare `paint_down_to_common()` for handling shallow commitsJohannes Schindelin via GitGitGadget, Feb 22, 2024
  25. 05/11 commit-reach: start reporting errors in `paint_down_to_common()`Johannes Schindelin via GitGitGadget, Feb 22, 2024
  26. 06/11 merge_bases_many(): pass on errors from `paint_down_to_common()`Johannes Schindelin via GitGitGadget, Feb 22, 2024
  27. 07/11 get_merge_bases_many_0(): pass on errors from `merge_bases_many()`Johannes Schindelin via GitGitGadget, Feb 22, 2024
  28. 08/11 repo_get_merge_bases(): pass on errors from `merge_bases_many()`Johannes Schindelin via GitGitGadget, Feb 22, 2024
  29. 10/11 repo_get_merge_bases_many(): pass on errors from `merge_bases_many()`Johannes Schindelin via GitGitGadget, Feb 22, 2024
  30. 09/11 get_octopus_merge_bases(): pass on errors from `merge_bases_many()`Johannes Schindelin via GitGitGadget, Feb 22, 2024
  31. 11/11 repo_get_merge_bases_many_dirty(): pass on errors from `merge_bases_many()`Johannes Schindelin via GitGitGadget, Feb 22, 2024
  32. 00/11 The merge-base logic vs missing commit objectsJohannes Schindelin via GitGitGadget, Feb 27, 2024
  33. 01/11 paint_down_to_common: plug two memory leaksJohannes Schindelin via GitGitGadget, Feb 27, 2024
  34. 02/11 Prepare `repo_in_merge_bases_many()` to optionally expect missing commitsJohannes Schindelin via GitGitGadget, Feb 27, 2024
  35. 04/11 Prepare `paint_down_to_common()` for handling shallow commitsJohannes Schindelin via GitGitGadget, Feb 27, 2024
  36. Dirk GoudersFeb 27, 2024
  37. Johannes SchindelinFeb 27, 2024
  38. Junio C HamanoFeb 27, 2024
  39. Junio C HamanoFeb 27, 2024
  40. Dirk GoudersFeb 27, 2024
  41. 03/11 Start reporting missing commits in `repo_in_merge_bases_many()`Johannes Schindelin via GitGitGadget, Feb 27, 2024
  42. 05/11 commit-reach: start reporting errors in `paint_down_to_common()`Johannes Schindelin via GitGitGadget, Feb 27, 2024
  43. Dirk GoudersFeb 27, 2024
  44. Johannes SchindelinFeb 27, 2024
  45. Junio C HamanoFeb 27, 2024
  46. 06/11 merge_bases_many(): pass on errors from `paint_down_to_common()`Johannes Schindelin via GitGitGadget, Feb 27, 2024
  47. Junio C HamanoFeb 27, 2024
  48. 07/11 get_merge_bases_many_0(): pass on errors from `merge_bases_many()`Johannes Schindelin via GitGitGadget, Feb 27, 2024
  49. 08/11 repo_get_merge_bases(): pass on errors from `merge_bases_many()`Johannes Schindelin via GitGitGadget, Feb 27, 2024
  50. 09/11 get_octopus_merge_bases(): pass on errors from `merge_bases_many()`Johannes Schindelin via GitGitGadget, Feb 27, 2024
  51. 10/11 repo_get_merge_bases_many(): pass on errors from `merge_bases_many()`Johannes Schindelin via GitGitGadget, Feb 27, 2024
  52. 11/11 repo_get_merge_bases_many_dirty(): pass on errors from `merge_bases_many()`Johannes Schindelin via GitGitGadget, Feb 27, 2024
  53. 00/11 The merge-base logic vs missing commit objectsJohannes Schindelin via GitGitGadget, Feb 28, 2024
  54. 01/11 commit-reach(paint_down_to_common): plug two memory leaksJohannes Schindelin via GitGitGadget, Feb 28, 2024
  55. 02/11 commit-reach(repo_in_merge_bases_many): optionally expect missing commitsJohannes Schindelin via GitGitGadget, Feb 28, 2024
  56. 03/11 commit-reach(repo_in_merge_bases_many): report missing commitsJohannes Schindelin via GitGitGadget, Feb 28, 2024
  57. Jeff KingMar 1, 2024
  58. Junio C HamanoMar 1, 2024
  59. 04/11 commit-reach(paint_down_to_common): prepare for handling shallow commitsJohannes Schindelin via GitGitGadget, Feb 28, 2024
  60. Junio C HamanoFeb 28, 2024
  61. Dirk GoudersFeb 28, 2024
  62. Johannes SchindelinFeb 29, 2024
  63. Johannes SchindelinFeb 29, 2024
  64. 05/11 commit-reach(paint_down_to_common): start reporting errorsJohannes Schindelin via GitGitGadget, Feb 28, 2024
  65. 06/11 commit-reach(merge_bases_many): pass on "missing commits" errorsJohannes Schindelin via GitGitGadget, Feb 28, 2024
  66. 07/11 commit-reach(get_merge_bases_many_0): pass on "missing commits" errorsJohannes Schindelin via GitGitGadget, Feb 28, 2024
  67. 08/11 commit-reach(repo_get_merge_bases): pass on "missing commits" errorsJohannes Schindelin via GitGitGadget, Feb 28, 2024
  68. 09/11 commit-reach(get_octopus_merge_bases): pass on "missing commits" errorsJohannes Schindelin via GitGitGadget, Feb 28, 2024
  69. 10/11 commit-reach(repo_get_merge_bases_many): pass on "missing commits" errorsJohannes Schindelin via GitGitGadget, Feb 28, 2024
  70. 11/11 commit-reach(repo_get_merge_bases_many_dirty): pass on errorsJohannes Schindelin via GitGitGadget, Feb 28, 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.