зеркало из https://github.com/microsoft/git.git
submodule: convert is_submodule_initialized to work on a repository
Convert 'is_submodule_initialized()' to take a repository object and while we're at it, lets rename the function to 'is_submodule_active()' and remove the NEEDSWORK comment. Signed-off-by: Brandon Williams <bmwill@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
69aba5329e
Коммит
627d9342fe
|
@ -4,6 +4,7 @@
|
|||
* Copyright (c) 2006 Junio C Hamano
|
||||
*/
|
||||
#include "cache.h"
|
||||
#include "repository.h"
|
||||
#include "config.h"
|
||||
#include "blob.h"
|
||||
#include "tree.h"
|
||||
|
@ -643,7 +644,7 @@ static int grep_submodule_launch(struct grep_opt *opt,
|
|||
static int grep_submodule(struct grep_opt *opt, const struct object_id *oid,
|
||||
const char *filename, const char *path)
|
||||
{
|
||||
if (!is_submodule_initialized(path))
|
||||
if (!is_submodule_active(the_repository, path))
|
||||
return 0;
|
||||
if (!is_submodule_populated_gently(path, NULL)) {
|
||||
/*
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#include "builtin.h"
|
||||
#include "repository.h"
|
||||
#include "cache.h"
|
||||
#include "config.h"
|
||||
#include "parse-options.h"
|
||||
|
@ -280,7 +281,7 @@ static void module_list_active(struct module_list *list)
|
|||
for (i = 0; i < list->nr; i++) {
|
||||
const struct cache_entry *ce = list->entries[i];
|
||||
|
||||
if (!is_submodule_initialized(ce->name))
|
||||
if (!is_submodule_active(the_repository, ce->name))
|
||||
continue;
|
||||
|
||||
ALLOC_GROW(active_modules.entries,
|
||||
|
@ -362,7 +363,7 @@ static void init_submodule(const char *path, const char *prefix, int quiet)
|
|||
*
|
||||
* Set active flag for the submodule being initialized
|
||||
*/
|
||||
if (!is_submodule_initialized(path)) {
|
||||
if (!is_submodule_active(the_repository, path)) {
|
||||
strbuf_reset(&sb);
|
||||
strbuf_addf(&sb, "submodule.%s.active", sub->name);
|
||||
git_config_set_gently(sb.buf, "true");
|
||||
|
@ -817,7 +818,7 @@ static int prepare_to_clone_next_submodule(const struct cache_entry *ce,
|
|||
}
|
||||
|
||||
/* Check if the submodule has been initialized. */
|
||||
if (!is_submodule_initialized(ce->name)) {
|
||||
if (!is_submodule_active(the_repository, ce->name)) {
|
||||
next_submodule_warn_missing(suc, out, displaypath);
|
||||
goto cleanup;
|
||||
}
|
||||
|
@ -1193,7 +1194,7 @@ static int is_active(int argc, const char **argv, const char *prefix)
|
|||
|
||||
gitmodules_config();
|
||||
|
||||
return !is_submodule_initialized(argv[1]);
|
||||
return !is_submodule_active(the_repository, argv[1]);
|
||||
}
|
||||
|
||||
#define SUPPORT_SUPER_PREFIX (1<<0)
|
||||
|
|
20
submodule.c
20
submodule.c
|
@ -283,21 +283,17 @@ void gitmodules_config_sha1(const unsigned char *commit_sha1)
|
|||
}
|
||||
|
||||
/*
|
||||
* NEEDSWORK: With the addition of different configuration options to determine
|
||||
* if a submodule is of interests, the validity of this function's name comes
|
||||
* into question. Once the dust has settled and more concrete terminology is
|
||||
* decided upon, come up with a more proper name for this function. One
|
||||
* potential candidate could be 'is_submodule_active()'.
|
||||
*
|
||||
* Determine if a submodule has been initialized at a given 'path'
|
||||
*/
|
||||
int is_submodule_initialized(const char *path)
|
||||
int is_submodule_active(struct repository *repo, const char *path)
|
||||
{
|
||||
int ret = 0;
|
||||
char *key = NULL;
|
||||
char *value = NULL;
|
||||
const struct string_list *sl;
|
||||
const struct submodule *module = submodule_from_path(null_sha1, path);
|
||||
const struct submodule *module;
|
||||
|
||||
module = submodule_from_cache(repo, null_sha1, path);
|
||||
|
||||
/* early return if there isn't a path->module mapping */
|
||||
if (!module)
|
||||
|
@ -305,14 +301,14 @@ int is_submodule_initialized(const char *path)
|
|||
|
||||
/* submodule.<name>.active is set */
|
||||
key = xstrfmt("submodule.%s.active", module->name);
|
||||
if (!git_config_get_bool(key, &ret)) {
|
||||
if (!repo_config_get_bool(repo, key, &ret)) {
|
||||
free(key);
|
||||
return ret;
|
||||
}
|
||||
free(key);
|
||||
|
||||
/* submodule.active is set */
|
||||
sl = git_config_get_value_multi("submodule.active");
|
||||
sl = repo_config_get_value_multi(repo, "submodule.active");
|
||||
if (sl) {
|
||||
struct pathspec ps;
|
||||
struct argv_array args = ARGV_ARRAY_INIT;
|
||||
|
@ -332,7 +328,7 @@ int is_submodule_initialized(const char *path)
|
|||
|
||||
/* fallback to checking if the URL is set */
|
||||
key = xstrfmt("submodule.%s.url", module->name);
|
||||
ret = !git_config_get_string(key, &value);
|
||||
ret = !repo_config_get_string(repo, key, &value);
|
||||
|
||||
free(value);
|
||||
free(key);
|
||||
|
@ -1532,7 +1528,7 @@ int submodule_move_head(const char *path,
|
|||
const struct submodule *sub;
|
||||
int *error_code_ptr, error_code;
|
||||
|
||||
if (!is_submodule_initialized(path))
|
||||
if (!is_submodule_active(the_repository, path))
|
||||
return 0;
|
||||
|
||||
if (flags & SUBMODULE_MOVE_HEAD_FORCE)
|
||||
|
|
|
@ -49,7 +49,7 @@ void load_submodule_cache(void);
|
|||
extern void gitmodules_config(void);
|
||||
extern void repo_read_gitmodules(struct repository *repo);
|
||||
extern void gitmodules_config_sha1(const unsigned char *commit_sha1);
|
||||
extern int is_submodule_initialized(const char *path);
|
||||
extern int is_submodule_active(struct repository *repo, const char *path);
|
||||
/*
|
||||
* Determine if a submodule has been populated at a given 'path' by checking if
|
||||
* the <path>/.git resolves to a valid git repository.
|
||||
|
|
Загрузка…
Ссылка в новой задаче