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

[PATCH 2/6] submodule--helper: return error from set-url when modifying failed

From
Jan Alexander Steffens (heftig) <heftig@archlinux.org>
Date
Oct 3, 2023, 18:50 UTC
Message-ID
<20231003185047.2697995-2-heftig@archlinux.org>
In-Reply-To
<20231003185047.2697995-1-heftig@archlinux.org>

set-branch will return an error when setting the config fails so I don't see why set-url shouldn't. Also skip the sync in this case.

Signed-off-by: Jan Alexander Steffens (heftig) <heftig@archlinux.org>
---
 builtin/submodule--helper.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c
index f376466a5e..e2175083a6 100644
--- a/builtin/submodule--helper.c
+++ b/builtin/submodule--helper.c
@@ -2890,39 +2890,41 @@ static int absorb_git_dirs(int argc, const char **argv, const char *prefix)
 
 static int module_set_url(int argc, const char **argv, const char *prefix)
 {
-	int quiet = 0;
+	int quiet = 0, ret;
 	const char *newurl;
 	const char *path;
 	char *config_name;
 	struct option options[] = {
 		OPT__QUIET(&quiet, N_("suppress output for setting url of a submodule")),
 		OPT_END()
 	};
 	const char *const usage[] = {
 		N_("git submodule set-url [--quiet] <path> <newurl>"),
 		NULL
 	};
 	const struct submodule *sub;
 
 	argc = parse_options(argc, argv, prefix, options, usage, 0);
 
 	if (argc != 2 || !(path = argv[0]) || !(newurl = argv[1]))
 		usage_with_options(usage, options);
 
 	sub = submodule_from_path(the_repository, null_oid(), path);
 
 	if (!sub)
 		die(_("no submodule mapping found in .gitmodules for path '%s'"),
 		    path);
 
 	config_name = xstrfmt("submodule.%s.url", sub->name);
-	config_set_in_gitmodules_file_gently(config_name, newurl);
+	ret = config_set_in_gitmodules_file_gently(config_name, newurl);
 
-	repo_read_gitmodules (the_repository, 0);
-	sync_submodule(sub->path, prefix, NULL, quiet ? OPT_QUIET : 0);
+	if (!ret) {
+		repo_read_gitmodules(the_repository, 0);
+		sync_submodule(sub->path, prefix, NULL, quiet ? OPT_QUIET : 0);
+	}
 
 	free(config_name);
-	return 0;
+	return !!ret;
 }
 
 static int module_set_branch(int argc, const char **argv, const char *prefix)
-- 
2.42.0
Previous: Jan Alexander Steffens (heftig)Next: Junio C Hamano
Message 4 of 19 in “git submodule set-url does not sync when name != path”
  1. Jan Alexander Steffens (heftig)Jul 24, 2023
  2. Bug: git submodule set-url does not handle name != path correctlyJan Alexander Steffens (heftig), Sep 9, 2023
  3. 1/6 submodule--helper: use submodule_from_path in set-{url,branch}Jan Alexander Steffens (heftig), Oct 3, 2023
  4. 2/6 submodule--helper: return error from set-url when modifying failedJan Alexander Steffens (heftig), Oct 3, 2023
  5. Junio C HamanoOct 3, 2023
  6. 5/6 t7419: Test that we correctly handle renamed submodulesJan Alexander Steffens (heftig), Oct 3, 2023
  7. 4/6 t7419, t7420: Use test_cmp_config instead of grepping .gitmodulesJan Alexander Steffens (heftig), Oct 3, 2023
  8. 3/6 t7419: Actually test the branch switchingJan Alexander Steffens (heftig), Oct 3, 2023
  9. Junio C HamanoOct 4, 2023
  10. 6/6 t7420: Test that we correctly handle renamed submodulesJan Alexander Steffens (heftig), Oct 3, 2023
  11. Junio C HamanoOct 4, 2023
  12. 1/6 submodule--helper: use submodule_from_path in set-{url,branch}Jan Alexander Steffens (heftig), Nov 21, 2023
  13. 2/6 submodule--helper: return error from set-url when modifying failedJan Alexander Steffens (heftig), Nov 21, 2023
  14. 4/6 t7419, t7420: use test_cmp_config instead of grepping .gitmodulesJan Alexander Steffens (heftig), Nov 21, 2023
  15. 3/6 t7419: actually test the branch switchingJan Alexander Steffens (heftig), Nov 21, 2023
  16. 5/6 t7419: test that we correctly handle renamed submodulesJan Alexander Steffens (heftig), Nov 21, 2023
  17. 6/6 t7420: test that we correctly handle renamed submodulesJan Alexander Steffens (heftig), Nov 21, 2023
  18. Junio C HamanoNov 22, 2023
  19. Jan Alexander Steffens (heftig)Nov 22, 2023

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.