refs: centralize initialization of the base ref_store.

Signed-off-by: Han-Wen Nienhuys <hanwen@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Han-Wen Nienhuys committed Dec 22, 2021 at 18:11 UTC f9f7fd3b238cc56224c30235a0d248d027b7ecfa
5 files changed +11 -13
refs.c
+4 -2
@@ -2007,10 +2007,12 @@ struct ref_store *get_worktree_ref_store(const struct worktree *wt)
2007 return refs;
2008 }
2009
2010 -void base_ref_store_init(struct ref_store *refs,
2011 - const struct ref_storage_be *be)
2010 +void base_ref_store_init(struct ref_store *refs, struct repository *repo,
2011 + const char *path, const struct ref_storage_be *be)
2012 {
2013 refs->be = be;
2014 + refs->repo = repo;
2015 + refs->gitdir = xstrdup(path);
2016 }
2017
2018 /* backend functions */
refs/debug.c
+2 -1
@@ -26,7 +26,8 @@ struct ref_store *maybe_debug_wrap_ref_store(const char *gitdir, struct ref_stor
26 be_copy->name = store->be->name;
27 trace_printf_key(&trace_refs, "ref_store for %s\n", gitdir);
28 res->refs = store;
29 - base_ref_store_init((struct ref_store *)res, be_copy);
29 + base_ref_store_init((struct ref_store *)res, store->repo, gitdir,
30 + be_copy);
31 return (struct ref_store *)res;
32 }
33
refs/files-backend.c
+1 -4
@@ -86,11 +86,8 @@ static struct ref_store *files_ref_store_create(struct repository *repo,
86 struct ref_store *ref_store = (struct ref_store *)refs;
87 struct strbuf sb = STRBUF_INIT;
88
89 - ref_store->repo = repo;
90 - ref_store->gitdir = xstrdup(gitdir);
91 - base_ref_store_init(ref_store, &refs_be_files);
89 + base_ref_store_init(ref_store, repo, gitdir, &refs_be_files);
90 refs->store_flags = flags;
93 -
91 get_common_dir_noenv(&sb, gitdir);
92 refs->gitcommondir = strbuf_detach(&sb, NULL);
93 refs->packed_ref_store =
refs/packed-backend.c
+2 -4
@@ -201,13 +201,11 @@ struct ref_store *packed_ref_store_create(struct repository *repo,
201 struct ref_store *ref_store = (struct ref_store *)refs;
202 struct strbuf sb = STRBUF_INIT;
203
204 - base_ref_store_init(ref_store, &refs_be_packed);
205 - ref_store->repo = repo;
206 - ref_store->gitdir = xstrdup(gitdir);
204 + base_ref_store_init(ref_store, repo, gitdir, &refs_be_packed);
205 refs->store_flags = store_flags;
206 +
207 strbuf_addf(&sb, "%s/packed-refs", gitdir);
208 refs->path = strbuf_detach(&sb, NULL);
210 -
209 chdir_notify_reparent("packed-refs", &refs->path);
210 return ref_store;
211 }
refs/refs-internal.h
+2 -2
@@ -710,8 +710,8 @@ int parse_loose_ref_contents(const char *buf, struct object_id *oid,
710 * Fill in the generic part of refs and add it to our collection of
711 * reference stores.
712 */
713 -void base_ref_store_init(struct ref_store *refs,
714 - const struct ref_storage_be *be);
713 +void base_ref_store_init(struct ref_store *refs, struct repository *repo,
714 + const char *path, const struct ref_storage_be *be);
715
716 /*
717 * Support GIT_TRACE_REFS by optionally wrapping the given ref_store instance.