Skip to content

Commit c21fb46

Browse files
sivaraamgitster
authored andcommitted
submodule--helper: fix incorrect newlines in an error message
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/[email protected]/#t Signed-off-by: Kaartic Sivaraam <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent bbe3165 commit c21fb46

File tree

1 file changed

+23
-14
lines changed

1 file changed

+23
-14
lines changed

builtin/submodule--helper.c

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2776,7 +2776,7 @@ struct add_data {
27762776
};
27772777
#define ADD_DATA_INIT { .depth = -1 }
27782778

2779-
static void show_fetch_remotes(FILE *output, const char *git_dir_path)
2779+
static void append_fetch_remotes(struct strbuf *msg, const char *sm_name, const char *git_dir_path)
27802780
{
27812781
struct child_process cp_remote = CHILD_PROCESS_INIT;
27822782
struct strbuf sb_remote_out = STRBUF_INIT;
@@ -2792,7 +2792,7 @@ static void show_fetch_remotes(FILE *output, const char *git_dir_path)
27922792
while ((next_line = strchr(line, '\n')) != NULL) {
27932793
size_t len = next_line - line;
27942794
if (strip_suffix_mem(line, &len, " (fetch)"))
2795-
fprintf(output, " %.*s\n", (int)len, line);
2795+
strbuf_addf(msg, " %.*s\n", (int)len, line);
27962796
line = next_line + 1;
27972797
}
27982798
}
@@ -2824,19 +2824,28 @@ static int add_submodule(const struct add_data *add_data)
28242824

28252825
if (is_directory(submod_gitdir_path)) {
28262826
if (!add_data->force) {
2827-
fprintf(stderr, _("A git directory for '%s' is found "
2828-
"locally with remote(s):"),
2829-
add_data->sm_name);
2830-
show_fetch_remotes(stderr, submod_gitdir_path);
2827+
struct strbuf msg = STRBUF_INIT;
2828+
char *die_msg;
2829+
2830+
strbuf_addf(&msg, _("A git directory for '%s' is found "
2831+
"locally with remote(s):\n"),
2832+
add_data->sm_name);
2833+
2834+
append_fetch_remotes(&msg, add_data->sm_name,
2835+
submod_gitdir_path);
28312836
free(submod_gitdir_path);
2832-
die(_("If you want to reuse this local git "
2833-
"directory instead of cloning again from\n"
2834-
" %s\n"
2835-
"use the '--force' option. If the local git "
2836-
"directory is not the correct repo\n"
2837-
"or if you are unsure what this means, choose "
2838-
"another name with the '--name' option.\n"),
2839-
add_data->realrepo);
2837+
2838+
strbuf_addf(&msg, _("If you want to reuse this local git "
2839+
"directory instead of cloning again from\n"
2840+
" %s\n"
2841+
"use the '--force' option. If the local git "
2842+
"directory is not the correct repo\n"
2843+
"or you are unsure what this means choose "
2844+
"another name with the '--name' option."),
2845+
add_data->realrepo);
2846+
2847+
die_msg = strbuf_detach(&msg, NULL);
2848+
die("%s", die_msg);
28402849
} else {
28412850
printf(_("Reactivating local git directory for "
28422851
"submodule '%s'\n"), add_data->sm_name);

0 commit comments

Comments
 (0)