This is nearly same as Brandon sent out. (First patch of origin/bw/grep-recurse-submodules, will drop this patch once Brandons series is stable enough to build on). Signed-off-by: Stefan Beller <sbeller@xxxxxxxxxx> --- submodule.c | 11 +++++++++++ submodule.h | 1 + 2 files changed, 12 insertions(+) diff --git a/submodule.c b/submodule.c index c9d22e5..97eaf7c 100644 --- a/submodule.c +++ b/submodule.c @@ -914,6 +914,17 @@ int fetch_populated_submodules(const struct argv_array *options, return spf.result; } +int is_submodule_populated(const char *path) +{ + int retval = 0; + struct strbuf gitdir = STRBUF_INIT; + strbuf_addf(&gitdir, "%s/.git", path); + if (resolve_gitdir(gitdir.buf)) + retval = 1; + strbuf_release(&gitdir); + return retval; +} + unsigned is_submodule_modified(const char *path, int ignore_untracked) { ssize_t len; diff --git a/submodule.h b/submodule.h index afc58d0..d44b4f1 100644 --- a/submodule.h +++ b/submodule.h @@ -61,6 +61,7 @@ extern int fetch_populated_submodules(const struct argv_array *options, const char *prefix, int command_line_option, int quiet, int max_parallel_jobs); extern unsigned is_submodule_modified(const char *path, int ignore_untracked); +extern int is_submodule_populated(const char *path); extern int submodule_uses_gitfile(const char *path); extern int ok_to_remove_submodule(const char *path); extern int merge_submodule(unsigned char result[20], const char *path, -- 2.10.1.469.g00a8914