submodules: introduce check to see whether to touch a submodule
In later patches we introduce the --recurse-submodule flag for commands that modify the working directory, e.g. git-checkout. It is potentially expensive to check if a submodule needs an update, because a common theme to interact with submodules is to spawn a child process for each interaction. So let's introduce a function that checks if a submodule needs to be checked for an update before attempting the update. Signed-off-by: Stefan Beller <sbeller@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
cf055e465f
commit
84f8925eeb
16
submodule.c
16
submodule.c
@ -548,6 +548,22 @@ void set_config_update_recurse_submodules(int value)
|
||||
config_update_recurse_submodules = value;
|
||||
}
|
||||
|
||||
int should_update_submodules(void)
|
||||
{
|
||||
return config_update_recurse_submodules == RECURSE_SUBMODULES_ON;
|
||||
}
|
||||
|
||||
const struct submodule *submodule_from_ce(const struct cache_entry *ce)
|
||||
{
|
||||
if (!S_ISGITLINK(ce->ce_mode))
|
||||
return NULL;
|
||||
|
||||
if (!should_update_submodules())
|
||||
return NULL;
|
||||
|
||||
return submodule_from_path(null_sha1, ce->name);
|
||||
}
|
||||
|
||||
static int has_remote(const char *refname, const struct object_id *oid,
|
||||
int flags, void *cb_data)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user