path: root/builtin/submodule--helper.c
diff options
authorStefan Beller <>2016-04-28 20:02:45 (GMT)
committerJunio C Hamano <>2016-04-29 17:05:24 (GMT)
commitd92028a575dde9c325e23f89c3d2b24f13868c57 (patch)
treee6ea58d26e09d74c1a78fe54c3e2ef052a1e56c3 /builtin/submodule--helper.c
parent3604242f080a813d6f20a7394def422d1e55b30e (diff)
submodule init: fail gracefully with a missing .gitmodules file
When there is no .gitmodules file availabe to initialize a submodule from, `submodule_from_path` just returns NULL. We need to check for that and abort gracefully. When `submodule init` was implemented in shell, a missing .gitmodules file would result in an error message No url found for submodule path '%s' in .gitmodules Replicate that error message for now. When the .gitmodules file is missing we can probably fail even earlier for all of the submodules with an improved error message. Signed-off-by: Stefan Beller <> Signed-off-by: Junio C Hamano <>
Diffstat (limited to 'builtin/submodule--helper.c')
1 files changed, 7 insertions, 3 deletions
diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c
index b6d4f27..ce9d11e 100644
--- a/builtin/submodule--helper.c
+++ b/builtin/submodule--helper.c
@@ -314,13 +314,17 @@ static void init_submodule(const char *path, const char *prefix, int quiet)
/* Only loads from .gitmodules, no overlay with .git/config */
- sub = submodule_from_path(null_sha1, path);
if (prefix) {
strbuf_addf(&sb, "%s%s", prefix, path);
displaypath = strbuf_detach(&sb, NULL);
} else
- displaypath = xstrdup(sub->path);
+ displaypath = xstrdup(path);
+ sub = submodule_from_path(null_sha1, path);
+ if (!sub)
+ die(_("No url found for submodule path '%s' in .gitmodules"),
+ displaypath);
* Copy url setting when it is not set yet.