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

Re: [PATCH v3 28/32] submodule--helper: libify "must_die_on_failure" code paths (for die)

From
Glen Choo <chooglen@google.com>
Date
Aug 23, 2022, 23:27 UTC
Message-ID
<kl6lk06y4k39.fsf@chooglen-macbookpro.roam.corp.google.com>
In-Reply-To
<patch-v3-28.32-6d9bccb34c3-20220821T130231Z-avarab@gmail.com>
Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:
> Continue the libification of codepaths that previously relied on
> "must_die_on_failure". In these cases we've always been early aborting
> by calling die(), but as we know that these codpaths will properly
s/codpaths/codepaths :p
Show 102 quoted lines
> handle return codes of 128 to mean an early abort let's have them use
> die_message() instead.
>
> This still isn't a complete migration away from die() for these
> codepaths, in particular this code in update_submodule() will still call die() in some cases:
>
> 	char *remote_name = get_default_remote_submodule(update_data->sm_path);
> 	const char *branch = remote_submodule_branch(update_data->sm_path);
>
> But as that code is used by other callers than the "update" code let's
> leave converting it for a subsequent commit.
>
> Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
> ---
>  builtin/submodule--helper.c | 29 +++++++++++++++++------------
>  1 file changed, 17 insertions(+), 12 deletions(-)
>
> diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c
> index 851000ae30e..5f109d422ea 100644
> --- a/builtin/submodule--helper.c
> +++ b/builtin/submodule--helper.c
> @@ -2245,9 +2245,9 @@ static int run_update_procedure(struct update_data *ud)
>  		 */
>  		if (!is_tip_reachable(ud->sm_path, &ud->oid) &&
>  		    fetch_in_submodule(ud->sm_path, ud->depth, ud->quiet, &ud->oid))
> -			die(_("Fetched in submodule path '%s', but it did not "
> -			      "contain %s. Direct fetching of that commit failed."),
> -			    ud->displaypath, oid_to_hex(&ud->oid));
> +			return die_message(_("Fetched in submodule path '%s', but it did not "
> +					     "contain %s. Direct fetching of that commit failed."),
> +					   ud->displaypath, oid_to_hex(&ud->oid));
>  	}
>  
>  	return run_update_command(ud, subforce);
> @@ -2291,13 +2291,14 @@ static const char *remote_submodule_branch(const char *path)
>  	return branch;
>  }
>  
> -static void ensure_core_worktree(const char *path)
> +static int ensure_core_worktree(const char *path)
>  {
>  	const char *cw;
>  	struct repository subrepo;
>  
>  	if (repo_submodule_init(&subrepo, the_repository, path, null_oid()))
> -		die(_("could not get a repository handle for submodule '%s'"), path);
> +		return die_message(_("could not get a repository handle for submodule '%s'"),
> +				   path);
>  
>  	if (!repo_config_get_string_tmp(&subrepo, "core.worktree", &cw)) {
>  		char *cfg_file, *abs_path;
> @@ -2315,6 +2316,8 @@ static void ensure_core_worktree(const char *path)
>  		free(abs_path);
>  		strbuf_release(&sb);
>  	}
> +
> +	return 0;
>  }
>  
>  static const char *submodule_update_type_to_label(enum submodule_update_type type)
> @@ -2390,7 +2393,9 @@ static int update_submodule(struct update_data *update_data)
>  {
>  	int ret;
>  
> -	ensure_core_worktree(update_data->sm_path);
> +	ret = ensure_core_worktree(update_data->sm_path);
> +	if (ret)
> +		return ret;
>  
>  	update_data->displaypath = get_submodule_displaypath(
>  		update_data->sm_path, update_data->prefix);
> @@ -2406,8 +2411,8 @@ static int update_submodule(struct update_data *update_data)
>  	if (update_data->just_cloned)
>  		oidcpy(&update_data->suboid, null_oid());
>  	else if (resolve_gitlink_ref(update_data->sm_path, "HEAD", &update_data->suboid))
> -		die(_("Unable to find current revision in submodule path '%s'"),
> -			update_data->displaypath);
> +		return die_message(_("Unable to find current revision in submodule path '%s'"),
> +				   update_data->displaypath);
>  
>  	if (update_data->remote) {
>  		char *remote_name = get_default_remote_submodule(update_data->sm_path);
> @@ -2417,13 +2422,13 @@ static int update_submodule(struct update_data *update_data)
>  		if (!update_data->nofetch) {
>  			if (fetch_in_submodule(update_data->sm_path, update_data->depth,
>  					      0, NULL))
> -				die(_("Unable to fetch in submodule path '%s'"),
> -				    update_data->sm_path);
> +				return die_message(_("Unable to fetch in submodule path '%s'"),
> +						   update_data->sm_path);
>  		}
>  
>  		if (resolve_gitlink_ref(update_data->sm_path, remote_ref, &update_data->oid))
> -			die(_("Unable to find %s revision in submodule path '%s'"),
> -			    remote_ref, update_data->sm_path);
> +			return die_message(_("Unable to find %s revision in submodule path '%s'"),
> +					   remote_ref, update_data->sm_path);
>  
>  		free(remote_ref);
>  	}
> -- 
> 2.37.2.1279.g64dec4e13cf
Previous: Ævar Arnfjörð BjarmasonNext: Ævar Arnfjörð Bjarmason
Message 99 of 142 in “submodule--helper: add tests, rm dead code, refactor & leak prep”
  1. 00/20 submodule--helper: add tests, rm dead code, refactor & leak prepÆvar Arnfjörð Bjarmason, Jul 28, 2022
  2. 01/20 submodule tests: test usage behaviorÆvar Arnfjörð Bjarmason, Jul 28, 2022
  3. Glen ChooJul 29, 2022
  4. 02/20 submodule tests: test for "add <repository> <abs-path>"Ævar Arnfjörð Bjarmason, Jul 28, 2022
  5. 03/20 submodule--helper: remove unused "name" helperÆvar Arnfjörð Bjarmason, Jul 28, 2022
  6. 04/20 submodule--helper: remove unused "list" helperÆvar Arnfjörð Bjarmason, Jul 28, 2022
  7. Glen ChooJul 29, 2022
  8. 05/20 test-tool submodule-config: remove unused "--url" handlingÆvar Arnfjörð Bjarmason, Jul 28, 2022
  9. 06/20 submodule--helper: move "is-active" to a test-toolÆvar Arnfjörð Bjarmason, Jul 28, 2022
  10. Glen ChooJul 29, 2022
  11. 08/20 submodule--helper: move "resolve-relative-url-test" to a test-toolÆvar Arnfjörð Bjarmason, Jul 28, 2022
  12. Glen ChooJul 29, 2022
  13. 07/20 submodule--helper: move "check-name" to a test-toolÆvar Arnfjörð Bjarmason, Jul 28, 2022
  14. Glen ChooJul 29, 2022
  15. 09/20 submodule--helper style: don't separate declared variables with \n\nÆvar Arnfjörð Bjarmason, Jul 28, 2022
  16. 10/20 submodule--helper style: add \n\n after variable declarationsÆvar Arnfjörð Bjarmason, Jul 28, 2022
  17. 11/20 submodule--helper: replace memset() with { 0 }-initializationÆvar Arnfjörð Bjarmason, Jul 28, 2022
  18. 12/20 submodule--helper: convert a strbuf_detach() to xstrfmt()Ævar Arnfjörð Bjarmason, Jul 28, 2022
  19. 13/20 submodule--helper: stop conflating "sb" in clone_submodule()Ævar Arnfjörð Bjarmason, Jul 28, 2022
  20. Glen ChooJul 29, 2022
  21. 14/20 submodule--helper: pass a "const struct module_clone_data" to clone_submodule()Ævar Arnfjörð Bjarmason, Jul 28, 2022
  22. Glen ChooJul 29, 2022
  23. Ævar Arnfjörð BjarmasonAug 1, 2022
  24. 15/20 submodule--helper: add "const" to copy of "update_data"Ævar Arnfjörð Bjarmason, Jul 28, 2022
  25. 16/20 submodule--helper: refactor "errmsg_str" to be a "struct strbuf"Ævar Arnfjörð Bjarmason, Jul 28, 2022
  26. 17/20 submodule--helper: rename "int res" to "int ret"Ævar Arnfjörð Bjarmason, Jul 28, 2022
  27. 18/20 submodule--helper: add skeleton "goto cleanup" to update_submodule()Ævar Arnfjörð Bjarmason, Jul 28, 2022
  28. 19/20 submodule--helper: don't exit() on failure, returnÆvar Arnfjörð Bjarmason, Jul 28, 2022
  29. Glen ChooJul 29, 2022
  30. 20/20 submodule--helper: fix bad config API usageÆvar Arnfjörð Bjarmason, Jul 28, 2022
  31. Glen ChooJul 29, 2022
  32. 00/28 submodule--helper: add tests, rm dead code, refactor & leak prepÆvar Arnfjörð Bjarmason, Aug 2, 2022
  33. 02/28 submodule tests: test for "add <repository> <abs-path>"Ævar Arnfjörð Bjarmason, Aug 2, 2022
  34. 01/28 submodule tests: test usage behaviorÆvar Arnfjörð Bjarmason, Aug 2, 2022
  35. Glen ChooAug 2, 2022
  36. 03/28 submodule--helper: remove unused "name" helperÆvar Arnfjörð Bjarmason, Aug 2, 2022
  37. 05/28 test-tool submodule-config: remove unused "--url" handlingÆvar Arnfjörð Bjarmason, Aug 2, 2022
  38. 04/28 submodule--helper: remove unused "list" helperÆvar Arnfjörð Bjarmason, Aug 2, 2022
  39. 06/28 submodule--helper: move "is-active" to a test-toolÆvar Arnfjörð Bjarmason, Aug 2, 2022
  40. 07/28 submodule--helper: move "check-name" to a test-toolÆvar Arnfjörð Bjarmason, Aug 2, 2022
  41. 08/28 submodule--helper: move "resolve-relative-url-test" to a test-toolÆvar Arnfjörð Bjarmason, Aug 2, 2022
  42. Glen ChooAug 2, 2022
  43. 11/28 submodule--helper: replace memset() with { 0 }-initializationÆvar Arnfjörð Bjarmason, Aug 2, 2022
  44. 10/28 submodule--helper style: add \n\n after variable declarationsÆvar Arnfjörð Bjarmason, Aug 2, 2022
  45. 09/28 submodule--helper style: don't separate declared variables with \n\nÆvar Arnfjörð Bjarmason, Aug 2, 2022
  46. 13/28 submodule--helper: move "sb" in clone_submodule() to its own scopeÆvar Arnfjörð Bjarmason, Aug 2, 2022
  47. 12/28 submodule--helper: use xstrfmt() in clone_submodule()Ævar Arnfjörð Bjarmason, Aug 2, 2022
  48. 15/28 submodule--helper: add "const" to copy of "update_data"Ævar Arnfjörð Bjarmason, Aug 2, 2022
  49. 14/28 submodule--helper: pass a "const struct module_clone_data" to clone_submodule()Ævar Arnfjörð Bjarmason, Aug 2, 2022
  50. 17/28 submodule--helper: don't redundantly check "else if (res)"Ævar Arnfjörð Bjarmason, Aug 2, 2022
  51. 16/28 submodule--helper: refactor "errmsg_str" to be a "struct strbuf"Ævar Arnfjörð Bjarmason, Aug 2, 2022
  52. 18/28 submodule--helper: rename "int res" to "int ret"Ævar Arnfjörð Bjarmason, Aug 2, 2022
  53. 19/28 submodule--helper: return "ret", not "1" from update_submodule()Ævar Arnfjörð Bjarmason, Aug 2, 2022
  54. 20/28 submodule--helper: add missing braces to "else" armÆvar Arnfjörð Bjarmason, Aug 2, 2022
  55. 21/28 submodule--helper: don't call submodule_strategy_to_string() in BUG()Ævar Arnfjörð Bjarmason, Aug 2, 2022
  56. Glen ChooAug 2, 2022
  57. 22/28 submodule--helper: move submodule_strategy_to_string() to only userÆvar Arnfjörð Bjarmason, Aug 2, 2022
  58. Glen ChooAug 2, 2022
  59. Ævar Arnfjörð BjarmasonAug 3, 2022
  60. 24/28 submodule--helper: don't exit() on failure, returnÆvar Arnfjörð Bjarmason, Aug 2, 2022
  61. 25/28 submodule--helper: libify determine_submodule_update_strategy()Ævar Arnfjörð Bjarmason, Aug 2, 2022
  62. 23/28 submodule--helper: use "code" in run_update_command()Ævar Arnfjörð Bjarmason, Aug 2, 2022
  63. 27/28 submodule--helper: libify "must_die_on_failure" code paths (for die)Ævar Arnfjörð Bjarmason, Aug 2, 2022
  64. Glen ChooAug 3, 2022
  65. 26/28 submodule--helper: libify "must_die_on_failure" code pathsÆvar Arnfjörð Bjarmason, Aug 2, 2022
  66. Glen ChooAug 3, 2022
  67. 28/28 submodule--helper: fix bad config API usageÆvar Arnfjörð Bjarmason, Aug 2, 2022
  68. 00/32 submodule--helper: add tests, rm dead code, refactor & leak prepÆvar Arnfjörð Bjarmason, Aug 21, 2022
  69. 01/32 submodule tests: test usage behaviorÆvar Arnfjörð Bjarmason, Aug 21, 2022
  70. Glen ChooAug 23, 2022
  71. 02/32 submodule tests: test for "add <repository> <abs-path>"Ævar Arnfjörð Bjarmason, Aug 21, 2022
  72. 03/32 submodule--helper: remove unused "name" helperÆvar Arnfjörð Bjarmason, Aug 21, 2022
  73. 04/32 submodule--helper: remove unused "list" helperÆvar Arnfjörð Bjarmason, Aug 21, 2022
  74. 05/32 test-tool submodule-config: remove unused "--url" handlingÆvar Arnfjörð Bjarmason, Aug 21, 2022
  75. 06/32 submodule--helper: move "is-active" to a test-toolÆvar Arnfjörð Bjarmason, Aug 21, 2022
  76. 07/32 submodule--helper: move "check-name" to a test-toolÆvar Arnfjörð Bjarmason, Aug 21, 2022
  77. 08/32 submodule--helper: move "resolve-relative-url-test" to a test-toolÆvar Arnfjörð Bjarmason, Aug 21, 2022
  78. 09/32 submodule--helper style: don't separate declared variables with \n\nÆvar Arnfjörð Bjarmason, Aug 21, 2022
  79. 10/32 submodule--helper style: add \n\n after variable declarationsÆvar Arnfjörð Bjarmason, Aug 21, 2022
  80. 11/32 submodule--helper: replace memset() with { 0 }-initializationÆvar Arnfjörð Bjarmason, Aug 21, 2022
  81. 13/32 submodule--helper: move "sb" in clone_submodule() to its own scopeÆvar Arnfjörð Bjarmason, Aug 21, 2022
  82. 12/32 submodule--helper: use xstrfmt() in clone_submodule()Ævar Arnfjörð Bjarmason, Aug 21, 2022
  83. 14/32 submodule--helper: add "const" to passed "module_clone_data"Ævar Arnfjörð Bjarmason, Aug 21, 2022
  84. 15/32 submodule--helper: add "const" to copy of "update_data"Ævar Arnfjörð Bjarmason, Aug 21, 2022
  85. 16/32 submodule--helper: refactor "errmsg_str" to be a "struct strbuf"Ævar Arnfjörð Bjarmason, Aug 21, 2022
  86. 17/32 submodule--helper: don't redundantly check "else if (res)"Ævar Arnfjörð Bjarmason, Aug 21, 2022
  87. Eric SunshineAug 21, 2022
  88. 19/32 submodule--helper: return "ret", not "1" from update_submodule()Ævar Arnfjörð Bjarmason, Aug 21, 2022
  89. 18/32 submodule--helper: rename "int res" to "int ret"Ævar Arnfjörð Bjarmason, Aug 21, 2022
  90. 20/32 submodule--helper: add missing braces to "else" armÆvar Arnfjörð Bjarmason, Aug 21, 2022
  91. 21/32 submodule--helper: don't call submodule_strategy_to_string() in BUG()Ævar Arnfjörð Bjarmason, Aug 21, 2022
  92. 22/32 submodule API: don't handle SM_..{UNSPECIFIED,COMMAND} in to_string()Ævar Arnfjörð Bjarmason, Aug 21, 2022
  93. 23/32 submodule--helper: use "code" in run_update_command()Ævar Arnfjörð Bjarmason, Aug 21, 2022
  94. 24/32 submodule--helper: don't exit() on failure, returnÆvar Arnfjörð Bjarmason, Aug 21, 2022
  95. 25/32 submodule--helper: libify determine_submodule_update_strategy()Ævar Arnfjörð Bjarmason, Aug 21, 2022
  96. 27/32 submodule--helper update: don't override 'checkout' exit codeÆvar Arnfjörð Bjarmason, Aug 21, 2022
  97. 26/32 submodule--helper: libify "must_die_on_failure" code pathsÆvar Arnfjörð Bjarmason, Aug 21, 2022
  98. 28/32 submodule--helper: libify "must_die_on_failure" code paths (for die)Ævar Arnfjörð Bjarmason, Aug 21, 2022
  99. Glen ChooAug 23, 2022
  100. 31/32 submodule--helper: libify even more "die" paths for module_update()Ævar Arnfjörð Bjarmason, Aug 21, 2022
  101. Glen ChooAug 24, 2022
  102. 29/32 submodule--helper: check repo{_submodule,}_init() return valuesÆvar Arnfjörð Bjarmason, Aug 21, 2022
  103. Glen ChooAug 23, 2022
  104. 32/32 submodule--helper: fix bad config API usageÆvar Arnfjörð Bjarmason, Aug 21, 2022
  105. 30/32 submodule--helper: libify more "die" paths for module_update()Ævar Arnfjörð Bjarmason, Aug 21, 2022
  106. Glen ChooAug 24, 2022
  107. 00/33 submodule--helper: add tests, rm dead code, refactor & leak prepÆvar Arnfjörð Bjarmason, Aug 31, 2022
  108. 01/33 submodule tests: test usage behaviorÆvar Arnfjörð Bjarmason, Aug 31, 2022
  109. 02/33 submodule tests: test for "add <repository> <abs-path>"Ævar Arnfjörð Bjarmason, Aug 31, 2022
  110. 03/33 submodule--helper: remove unused "name" helperÆvar Arnfjörð Bjarmason, Aug 31, 2022
  111. 04/33 submodule--helper: remove unused "list" helperÆvar Arnfjörð Bjarmason, Aug 31, 2022
  112. 05/33 test-tool submodule-config: remove unused "--url" handlingÆvar Arnfjörð Bjarmason, Aug 31, 2022
  113. 07/33 submodule--helper: move "check-name" to a test-toolÆvar Arnfjörð Bjarmason, Aug 31, 2022
  114. 08/33 submodule--helper: move "resolve-relative-url-test" to a test-toolÆvar Arnfjörð Bjarmason, Aug 31, 2022
  115. 09/33 submodule--helper style: don't separate declared variables with \n\nÆvar Arnfjörð Bjarmason, Aug 31, 2022
  116. 12/33 submodule--helper: use xstrfmt() in clone_submodule()Ævar Arnfjörð Bjarmason, Aug 31, 2022
  117. 11/33 submodule--helper: replace memset() with { 0 }-initializationÆvar Arnfjörð Bjarmason, Aug 31, 2022
  118. 06/33 submodule--helper: move "is-active" to a test-toolÆvar Arnfjörð Bjarmason, Aug 31, 2022
  119. 10/33 submodule--helper style: add \n\n after variable declarationsÆvar Arnfjörð Bjarmason, Aug 31, 2022
  120. 16/33 submodule--helper: add "const" to passed "struct update_data"Ævar Arnfjörð Bjarmason, Aug 31, 2022
  121. 14/33 submodule--helper: add "const" to passed "module_clone_data"Ævar Arnfjörð Bjarmason, Aug 31, 2022
  122. 13/33 submodule--helper: move "sb" in clone_submodule() to its own scopeÆvar Arnfjörð Bjarmason, Aug 31, 2022
  123. 19/33 submodule--helper: rename "int res" to "int ret"Ævar Arnfjörð Bjarmason, Aug 31, 2022
  124. 17/33 submodule--helper: refactor "errmsg_str" to be a "struct strbuf"Ævar Arnfjörð Bjarmason, Aug 31, 2022
  125. 18/33 submodule--helper: don't redundantly check "else if (res)"Ævar Arnfjörð Bjarmason, Aug 31, 2022
  126. 15/33 submodule--helper: add "const" to copy of "update_data"Ævar Arnfjörð Bjarmason, Aug 31, 2022
  127. 21/33 submodule--helper: add missing braces to "else" armÆvar Arnfjörð Bjarmason, Aug 31, 2022
  128. 22/33 submodule--helper: don't call submodule_strategy_to_string() in BUG()Ævar Arnfjörð Bjarmason, Aug 31, 2022
  129. 20/33 submodule--helper: return "ret", not "1" from update_submodule()Ævar Arnfjörð Bjarmason, Aug 31, 2022
  130. 23/33 submodule API: don't handle SM_..{UNSPECIFIED,COMMAND} in to_string()Ævar Arnfjörð Bjarmason, Aug 31, 2022
  131. 24/33 submodule--helper: use "code" in run_update_command()Ævar Arnfjörð Bjarmason, Aug 31, 2022
  132. 26/33 submodule--helper: libify determine_submodule_update_strategy()Ævar Arnfjörð Bjarmason, Aug 31, 2022
  133. 27/33 submodule--helper: libify "must_die_on_failure" code pathsÆvar Arnfjörð Bjarmason, Aug 31, 2022
  134. 25/33 submodule--helper: don't exit() on failure, returnÆvar Arnfjörð Bjarmason, Aug 31, 2022
  135. 28/33 submodule--helper update: don't override 'checkout' exit codeÆvar Arnfjörð Bjarmason, Aug 31, 2022
  136. 29/33 submodule--helper: libify "must_die_on_failure" code paths (for die)Ævar Arnfjörð Bjarmason, Aug 31, 2022
  137. 30/33 submodule--helper: check repo{_submodule,}_init() return valuesÆvar Arnfjörð Bjarmason, Aug 31, 2022
  138. 32/33 submodule--helper: libify even more "die" paths for module_update()Ævar Arnfjörð Bjarmason, Aug 31, 2022
  139. 31/33 submodule--helper: libify more "die" paths for module_update()Ævar Arnfjörð Bjarmason, Aug 31, 2022
  140. Glen ChooSep 1, 2022
  141. 33/33 submodule--helper: fix bad config API usageÆvar Arnfjörð Bjarmason, Aug 31, 2022
  142. Glen ChooSep 1, 2022

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.