submodules: add helper to determine if a submodule is initialized

Add the `is_submodule_initialized()` helper function to submodules.c.
`is_submodule_initialized()` performs a check to determine if the
submodule at the given path has been initialized.

Signed-off-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Brandon Williams 2016-12-16 11:03:17 -08:00 committed by Junio C Hamano
parent 5688c28d81
commit f9f42560e2
2 changed files with 24 additions and 0 deletions

View File

@ -198,6 +198,29 @@ void gitmodules_config(void)
} }
} }
/*
* Determine if a submodule has been initialized at a given 'path'
*/
int is_submodule_initialized(const char *path)
{
int ret = 0;
const struct submodule *module = NULL;
module = submodule_from_path(null_sha1, path);
if (module) {
char *key = xstrfmt("submodule.%s.url", module->name);
char *value = NULL;
ret = !git_config_get_string(key, &value);
free(value);
free(key);
}
return ret;
}
/* /*
* Determine if a submodule has been populated at a given 'path' * Determine if a submodule has been populated at a given 'path'
*/ */

View File

@ -37,6 +37,7 @@ void set_diffopt_flags_from_submodule_config(struct diff_options *diffopt,
const char *path); const char *path);
int submodule_config(const char *var, const char *value, void *cb); int submodule_config(const char *var, const char *value, void *cb);
void gitmodules_config(void); void gitmodules_config(void);
extern int is_submodule_initialized(const char *path);
extern int is_submodule_populated(const char *path); extern int is_submodule_populated(const char *path);
int parse_submodule_update_strategy(const char *value, int parse_submodule_update_strategy(const char *value,
struct submodule_update_strategy *dst); struct submodule_update_strategy *dst);