builtin/submodule--helper: add gitdir command

This exposes the gitdir name computed by submodule_name_to_gitdir()
internally, to make it easier for users and tests to interact with it.

Next commit will add a gitdir configuration, so this helper can also be
used to easily query that config or validate any gitdir path the user
sets (submodule_name_to_git_dir now runs the validation logic, since
our previous commit).

Based-on-patch-by: Brandon Williams <bwilliams.eng@gmail.com>
Signed-off-by: Adrian Ratiu <adrian.ratiu@collabora.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Adrian Ratiu 2026-01-08 01:01:37 +02:00 committed by Junio C Hamano
parent a05c78d224
commit 376c94b167

View File

@ -1208,6 +1208,22 @@ static int module_summary(int argc, const char **argv, const char *prefix,
return ret;
}
static int module_gitdir(int argc, const char **argv, const char *prefix UNUSED,
struct repository *repo)
{
struct strbuf gitdir = STRBUF_INIT;
if (argc != 2)
usage(_("git submodule--helper gitdir <name>"));
submodule_name_to_gitdir(&gitdir, repo, argv[1]);
printf("%s\n", gitdir.buf);
strbuf_release(&gitdir);
return 0;
}
struct sync_cb {
const char *prefix;
const char *super_prefix;
@ -3587,6 +3603,7 @@ int cmd_submodule__helper(int argc,
NULL
};
struct option options[] = {
OPT_SUBCOMMAND("gitdir", &fn, module_gitdir),
OPT_SUBCOMMAND("clone", &fn, module_clone),
OPT_SUBCOMMAND("add", &fn, module_add),
OPT_SUBCOMMAND("update", &fn, module_update),