1949
struct ref_store *refs;
1950
int flags;
1951
1952
- refs = get_submodule_ref_store(submodule);
1953
-
1952
+ refs = repo_get_submodule_ref_store(the_repository, submodule);
1953
if (!refs)
1954
return -1;
1955
1959
return 0;
1960
}
1961
1963
-/* A strmap of ref_stores, stored by submodule name: */
1964
-static struct strmap submodule_ref_stores;
1965
-
1962
/* A strmap of ref_stores, stored by worktree id: */
1963
static struct strmap worktree_ref_stores;
1964
2032
BUG("%s ref_store '%s' initialized twice", type, name);
2033
}
2034
2039
-struct ref_store *get_submodule_ref_store(const char *submodule)
2035
+struct ref_store *repo_get_submodule_ref_store(struct repository *repo,
2036
+ const char *submodule)
2037
{
2038
struct strbuf submodule_sb = STRBUF_INIT;
2039
struct ref_store *refs;
2054
/* We need to strip off one or more trailing slashes */
2055
submodule = to_free = xmemdupz(submodule, len);
2056
2060
- refs = lookup_ref_store_map(&submodule_ref_stores, submodule);
2057
+ refs = lookup_ref_store_map(&repo->submodule_ref_stores, submodule);
2058
if (refs)
2059
goto done;
2060
2066
goto done;
2067
2068
subrepo = xmalloc(sizeof(*subrepo));
2072
- /*
2073
- * NEEDSWORK: Make get_submodule_ref_store() work with arbitrary
2074
- * superprojects other than the_repository. This probably should be
2075
- * done by making it take a struct repository * parameter instead of a
2076
- * submodule path.
2077
- */
2078
- if (repo_submodule_init(subrepo, the_repository, submodule,
2069
+
2070
+ if (repo_submodule_init(subrepo, repo, submodule,
2071
null_oid())) {
2072
free(subrepo);
2073
goto done;
2074
}
2075
refs = ref_store_init(subrepo, submodule_sb.buf,
2076
REF_STORE_READ | REF_STORE_ODB);
2085
- register_ref_store_map(&submodule_ref_stores, "submodule",
2077
+ register_ref_store_map(&repo->submodule_ref_stores, "submodule",
2078
refs, submodule);
2079
2080
done: