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

[PATCH v2 1/1] submodule--helper: fix incorrect newlines in an error message

From
Kaartic Sivaraam <kaartic.sivaraam@gmail.com>
Date
Sep 18, 2021, 19:31 UTC
Message-ID
<20210918193116.310575-2-kaartic.sivaraam@gmail.com>
In-Reply-To
<20210918193116.310575-1-kaartic.sivaraam@gmail.com>

A refactoring[1] done as part of the recent conversion of 'git submodule add' to builtin, changed the error message shown when a Git directory already exists locally for a submodule name. Before the refactoring, the error used to appear like so:

  --- START OF OUTPUT ---
  $ git submodule add ../sub/ subm
  A git directory for 'subm' is found locally with remote(s):
    origin        /me/git-repos-for-test/sub
  If you want to reuse this local git directory instead of cloning again from
    /me/git-repos-for-test/sub
  use the '--force' option. If the local git directory is not the correct repo
  or you are unsure what this means choose another name with the '--name' option.
  ---  END OF OUTPUT  ---
After the refactoring the error started appearing like so:
  --- START OF OUTPUT ---
  $ git submodule add ../sub/ subm
  A git directory for 'subm' is found locally with remote(s):  origin     /me/git-repos-for-test/sub
  fatal: If you want to reuse this local git directory instead of cloning again from
  /me/git-repos-for-test/sub
  use the '--force' option. If the local git directory is not the correct repo
  or if you are unsure what this means, choose another name with the '--name' option.
  ---  END OF OUTPUT  ---

As one could observe the remote information is printed along with the first line rather than on its own line. Also, there's an additional newline following output.

Make the error message consistent with the error message that used to be printed before the refactoring.

This also moves the 'fatal:' prefix that appears in the middle of the error message to the first line as it would more appropriate to have it in the first line. The output after the change would look like:

  --- START OF OUTPUT ---
  $ git submodule add ../sub/ subm
  fatal: A git directory for 'subm' is found locally with remote(s):
    origin        /me/git-repos-for-test/sub
  If you want to reuse this local git directory instead of cloning again from
    /me/git-repos-for-test/sub
  use the '--force' option. If the local git directory is not the correct repo
  or you are unsure what this means choose another name with the '--name' option.
  ---  END OF OUTPUT  ---
[1]: https://lore.kernel.org/git/20210710074801.19917-5-raykar.ath@gmail.com/#t
Signed-off-by: Kaartic Sivaraam <kaartic.sivaraam@gmail.com>
---
 builtin/submodule--helper.c | 36 ++++++++++++++++++++++--------------
 1 file changed, 22 insertions(+), 14 deletions(-)
diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c
index 414fcb63ea..236da214c6 100644
--- a/builtin/submodule--helper.c
+++ b/builtin/submodule--helper.c
@@ -2775,7 +2775,7 @@ struct add_data {
 };
 #define ADD_DATA_INIT { .depth = -1 }
 
-static void show_fetch_remotes(FILE *output, const char *sm_name, const char *git_dir_path)
+static void show_fetch_remotes(struct strbuf *msg, const char *sm_name, const char *git_dir_path)
 {
 	struct child_process cp_remote = CHILD_PROCESS_INIT;
 	struct strbuf sb_remote_out = STRBUF_INIT;
@@ -2791,7 +2791,7 @@ static void show_fetch_remotes(FILE *output, const char *sm_name, const char *gi
 		while ((next_line = strchr(line, '\n')) != NULL) {
 			size_t len = next_line - line;
 			if (strip_suffix_mem(line, &len, " (fetch)"))
-				fprintf(output, "  %.*s\n", (int)len, line);
+				strbuf_addf(msg, "  %.*s\n", (int)len, line);
 			line = next_line + 1;
 		}
 	}
@@ -2823,20 +2823,28 @@ static int add_submodule(const struct add_data *add_data)
 
 		if (is_directory(submod_gitdir_path)) {
 			if (!add_data->force) {
-				fprintf(stderr, _("A git directory for '%s' is found "
-						  "locally with remote(s):"),
-					add_data->sm_name);
-				show_fetch_remotes(stderr, add_data->sm_name,
+				struct strbuf msg = STRBUF_INIT;
+				char *die_msg;
+
+				strbuf_addf(&msg, _("A git directory for '%s' is found "
+						    "locally with remote(s):\n"),
+					    add_data->sm_name);
+
+				show_fetch_remotes(&msg, add_data->sm_name,
 						   submod_gitdir_path);
 				free(submod_gitdir_path);
-				die(_("If you want to reuse this local git "
-				      "directory instead of cloning again from\n"
-				      "  %s\n"
-				      "use the '--force' option. If the local git "
-				      "directory is not the correct repo\n"
-				      "or if you are unsure what this means, choose "
-				      "another name with the '--name' option.\n"),
-				    add_data->realrepo);
+
+				strbuf_addf(&msg, _("If you want to reuse this local git "
+						    "directory instead of cloning again from\n"
+						    "  %s\n"
+						    "use the '--force' option. If the local git "
+						    "directory is not the correct repo\n"
+						    "or you are unsure what this means choose "
+						    "another name with the '--name' option."),
+					    add_data->realrepo);
+
+				die_msg = strbuf_detach(&msg, NULL);
+				die("%s", die_msg);
 			} else {
 				printf(_("Reactivating local git directory for "
 					 "submodule '%s'\n"), add_data->sm_name);
-- 
2.32.0.385.gc00617bc03.dirty
Previous: Kaartic SivaraamNext: Junio C Hamano
Message 28 of 34 in “submodule add: partial conversion to C”
  1. Atharva RaykarJul 6, 2021
  2. [GSoC] [PATCH 1/3] t7400: test failure to add submodule in tracked pathAtharva Raykar, Jul 6, 2021
  3. [GSoC] [PATCH 2/3] submodule--helper: refactor module_clone()Atharva Raykar, Jul 6, 2021
  4. [GSoC] [PATCH 3/3] submodule--helper: introduce add-clone subcommandAtharva Raykar, Jul 6, 2021
  5. Junio C HamanoJul 7, 2021
  6. Atharva RaykarJul 8, 2021
  7. [GSoC] [PATCH v2 0/4] submodule add: partial conversion to CAtharva Raykar, Jul 8, 2021
  8. [GSoC] [PATCH v2 1/4] t7400: test failure to add submodule in tracked pathAtharva Raykar, Jul 8, 2021
  9. [GSoC] [PATCH v2 2/4] submodule: prefix die messages with 'fatal'Atharva Raykar, Jul 8, 2021
  10. Junio C HamanoJul 8, 2021
  11. Đoàn Trần Công DanhJul 9, 2021
  12. Atharva RaykarJul 10, 2021
  13. Kaartic SivaraamJul 10, 2021
  14. [GSoC] [PATCH v2 3/4] submodule--helper: refactor module_clone()Atharva Raykar, Jul 8, 2021
  15. [GSoC] [PATCH v2 4/4] submodule--helper: introduce add-clone subcommandAtharva Raykar, Jul 8, 2021
  16. [GSoC] [PATCH v3 0/4] submodule add: partial conversion to CAtharva Raykar, Jul 10, 2021
  17. [GSoC] [PATCH v3 1/4] t7400: test failure to add submodule in tracked pathAtharva Raykar, Jul 10, 2021
  18. [GSoC] [PATCH v3 2/4] submodule: prefix die messages with 'fatal'Atharva Raykar, Jul 10, 2021
  19. [GSoC] [PATCH v3 3/4] submodule--helper: refactor module_clone()Atharva Raykar, Jul 10, 2021
  20. [GSoC] [PATCH v3 4/4] submodule--helper: introduce add-clone subcommandAtharva Raykar, Jul 10, 2021
  21. submodule: drop unused sm_name parameter from show_fetch_remotes()Jeff King, Jul 23, 2021
  22. Atharva RaykarJul 23, 2021
  23. Junio C HamanoJul 26, 2021
  24. submodule--helper: fix incorrect newlines in an error messageKaartic Sivaraam, Aug 5, 2021
  25. Atharva RaykarAug 6, 2021
  26. Kaartic SivaraamAug 6, 2021
  27. 0/1 submodule: corret an incorrectly formatted error messageKaartic Sivaraam, Sep 18, 2021
  28. 1/1 submodule--helper: fix incorrect newlines in an error messageKaartic Sivaraam, Sep 18, 2021
  29. Junio C HamanoSep 20, 2021
  30. Atharva RaykarSep 21, 2021
  31. Atharva RaykarSep 21, 2021
  32. 0/1 submodule: correct an incorrectly formatted error messageKaartic Sivaraam, Oct 23, 2021
  33. 1/1 submodule--helper: fix incorrect newlines in an error messageKaartic Sivaraam, Oct 23, 2021
  34. Junio C HamanoOct 24, 2021

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.