submodule: refactor `submodule_to_gitdir()` to accept a repo
The `submodule_to_gitdir()` function implicitly uses `the_repository` to resolve submodule paths. Refactor the function to instead accept a repo as parameter to remove the dependency on global state. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
93a8cfaf3c
commit
f9467895d8
|
@ -1301,7 +1301,7 @@ static void sync_submodule(const char *path, const char *prefix,
|
||||||
remote_key = xstrfmt("remote.%s.url", default_remote);
|
remote_key = xstrfmt("remote.%s.url", default_remote);
|
||||||
free(default_remote);
|
free(default_remote);
|
||||||
|
|
||||||
submodule_to_gitdir(&sb, path);
|
submodule_to_gitdir(the_repository, &sb, path);
|
||||||
strbuf_addstr(&sb, "/config");
|
strbuf_addstr(&sb, "/config");
|
||||||
|
|
||||||
if (git_config_set_in_file_gently(sb.buf, remote_key, NULL, sub_origin_url))
|
if (git_config_set_in_file_gently(sb.buf, remote_key, NULL, sub_origin_url))
|
||||||
|
|
2
path.c
2
path.c
|
@ -567,7 +567,7 @@ static int do_submodule_path(struct strbuf *buf, const char *path,
|
||||||
struct strbuf git_submodule_dir = STRBUF_INIT;
|
struct strbuf git_submodule_dir = STRBUF_INIT;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
ret = submodule_to_gitdir(&git_submodule_dir, path);
|
ret = submodule_to_gitdir(the_repository, &git_submodule_dir, path);
|
||||||
if (ret)
|
if (ret)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
|
|
2
refs.c
2
refs.c
|
@ -2146,7 +2146,7 @@ struct ref_store *repo_get_submodule_ref_store(struct repository *repo,
|
||||||
if (!is_nonbare_repository_dir(&submodule_sb))
|
if (!is_nonbare_repository_dir(&submodule_sb))
|
||||||
goto done;
|
goto done;
|
||||||
|
|
||||||
if (submodule_to_gitdir(&submodule_sb, submodule))
|
if (submodule_to_gitdir(repo, &submodule_sb, submodule))
|
||||||
goto done;
|
goto done;
|
||||||
|
|
||||||
subrepo = xmalloc(sizeof(*subrepo));
|
subrepo = xmalloc(sizeof(*subrepo));
|
||||||
|
|
11
submodule.c
11
submodule.c
|
@ -536,7 +536,8 @@ static struct repository *open_submodule(const char *path)
|
||||||
struct strbuf sb = STRBUF_INIT;
|
struct strbuf sb = STRBUF_INIT;
|
||||||
struct repository *out = xmalloc(sizeof(*out));
|
struct repository *out = xmalloc(sizeof(*out));
|
||||||
|
|
||||||
if (submodule_to_gitdir(&sb, path) || repo_init(out, sb.buf, NULL)) {
|
if (submodule_to_gitdir(the_repository, &sb, path) ||
|
||||||
|
repo_init(out, sb.buf, NULL)) {
|
||||||
strbuf_release(&sb);
|
strbuf_release(&sb);
|
||||||
free(out);
|
free(out);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -2572,7 +2573,8 @@ int get_superproject_working_tree(struct strbuf *buf)
|
||||||
* Put the gitdir for a submodule (given relative to the main
|
* Put the gitdir for a submodule (given relative to the main
|
||||||
* repository worktree) into `buf`, or return -1 on error.
|
* repository worktree) into `buf`, or return -1 on error.
|
||||||
*/
|
*/
|
||||||
int submodule_to_gitdir(struct strbuf *buf, const char *submodule)
|
int submodule_to_gitdir(struct repository *repo,
|
||||||
|
struct strbuf *buf, const char *submodule)
|
||||||
{
|
{
|
||||||
const struct submodule *sub;
|
const struct submodule *sub;
|
||||||
const char *git_dir;
|
const char *git_dir;
|
||||||
|
@ -2592,14 +2594,13 @@ int submodule_to_gitdir(struct strbuf *buf, const char *submodule)
|
||||||
strbuf_addstr(buf, git_dir);
|
strbuf_addstr(buf, git_dir);
|
||||||
}
|
}
|
||||||
if (!is_git_directory(buf->buf)) {
|
if (!is_git_directory(buf->buf)) {
|
||||||
sub = submodule_from_path(the_repository, null_oid(),
|
sub = submodule_from_path(repo, null_oid(), submodule);
|
||||||
submodule);
|
|
||||||
if (!sub) {
|
if (!sub) {
|
||||||
ret = -1;
|
ret = -1;
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
strbuf_reset(buf);
|
strbuf_reset(buf);
|
||||||
submodule_name_to_gitdir(buf, the_repository, sub->name);
|
submodule_name_to_gitdir(buf, repo, sub->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
|
|
|
@ -136,7 +136,8 @@ int push_unpushed_submodules(struct repository *r,
|
||||||
* path of that submodule in 'buf'. Return -1 on error or when the
|
* path of that submodule in 'buf'. Return -1 on error or when the
|
||||||
* submodule is not initialized.
|
* submodule is not initialized.
|
||||||
*/
|
*/
|
||||||
int submodule_to_gitdir(struct strbuf *buf, const char *submodule);
|
int submodule_to_gitdir(struct repository *repo,
|
||||||
|
struct strbuf *buf, const char *submodule);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Given a submodule name, create a path to where the submodule's gitdir lives
|
* Given a submodule name, create a path to where the submodule's gitdir lives
|
||||||
|
|
Loading…
Reference in New Issue