mirror of
https://github.com/git/git
synced 2024-10-01 06:05:20 +00:00
refs: pass storage format to ref_store_init()
explicitly
We're about to introduce logic to migrate refs from one storage format to another one. This will require us to initialize a ref store with a different format than the one used by the passed-in repository. Prepare for this by accepting the desired ref storage format as parameter. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
318efb966b
commit
6e1683ace9
19
refs.c
19
refs.c
|
@ -1891,16 +1891,17 @@ static struct ref_store *lookup_ref_store_map(struct strmap *map,
|
|||
|
||||
/*
|
||||
* Create, record, and return a ref_store instance for the specified
|
||||
* gitdir.
|
||||
* gitdir using the given ref storage format.
|
||||
*/
|
||||
static struct ref_store *ref_store_init(struct repository *repo,
|
||||
enum ref_storage_format format,
|
||||
const char *gitdir,
|
||||
unsigned int flags)
|
||||
{
|
||||
const struct ref_storage_be *be;
|
||||
struct ref_store *refs;
|
||||
|
||||
be = find_ref_storage_backend(repo->ref_storage_format);
|
||||
be = find_ref_storage_backend(format);
|
||||
if (!be)
|
||||
BUG("reference backend is unknown");
|
||||
|
||||
|
@ -1922,7 +1923,8 @@ struct ref_store *get_main_ref_store(struct repository *r)
|
|||
if (!r->gitdir)
|
||||
BUG("attempting to get main_ref_store outside of repository");
|
||||
|
||||
r->refs_private = ref_store_init(r, r->gitdir, REF_STORE_ALL_CAPS);
|
||||
r->refs_private = ref_store_init(r, r->ref_storage_format,
|
||||
r->gitdir, REF_STORE_ALL_CAPS);
|
||||
r->refs_private = maybe_debug_wrap_ref_store(r->gitdir, r->refs_private);
|
||||
return r->refs_private;
|
||||
}
|
||||
|
@ -1982,7 +1984,8 @@ struct ref_store *repo_get_submodule_ref_store(struct repository *repo,
|
|||
free(subrepo);
|
||||
goto done;
|
||||
}
|
||||
refs = ref_store_init(subrepo, submodule_sb.buf,
|
||||
refs = ref_store_init(subrepo, the_repository->ref_storage_format,
|
||||
submodule_sb.buf,
|
||||
REF_STORE_READ | REF_STORE_ODB);
|
||||
register_ref_store_map(&repo->submodule_ref_stores, "submodule",
|
||||
refs, submodule);
|
||||
|
@ -2011,12 +2014,12 @@ struct ref_store *get_worktree_ref_store(const struct worktree *wt)
|
|||
struct strbuf common_path = STRBUF_INIT;
|
||||
strbuf_git_common_path(&common_path, wt->repo,
|
||||
"worktrees/%s", wt->id);
|
||||
refs = ref_store_init(wt->repo, common_path.buf,
|
||||
REF_STORE_ALL_CAPS);
|
||||
refs = ref_store_init(wt->repo, wt->repo->ref_storage_format,
|
||||
common_path.buf, REF_STORE_ALL_CAPS);
|
||||
strbuf_release(&common_path);
|
||||
} else {
|
||||
refs = ref_store_init(wt->repo, wt->repo->commondir,
|
||||
REF_STORE_ALL_CAPS);
|
||||
refs = ref_store_init(wt->repo, the_repository->ref_storage_format,
|
||||
wt->repo->commondir, REF_STORE_ALL_CAPS);
|
||||
}
|
||||
|
||||
if (refs)
|
||||
|
|
Loading…
Reference in a new issue