From: Junio C Hamano Date: Wed, 26 Nov 2025 15:16:15 GMT Subject: Re: [PATCH v2 1/2] refs: support obtaining ref_store for given dir Message-ID: In-Reply-To: <20251126-kn-alternate-ref-dir-v2-1-8b9f6f18f635@gmail.com> Karthik Nayak writes: > The refs subsystem uses the `get_main_ref_store()` to obtain the main > ref_store for a given repository. In the upcoming patches we also want > to create a ref_store for any given reference directory, which may exist > in arbitrary paths. For the files backend and the reftable backend, the > reference directory is generally the $GIT_DIR. > > To support such behavior, extract out the core logic for creating out > the ref_store from `get_main_ref_store()` into a new function > `get_ref_store_for_dir()` which can provide the ref_store for a > given (repository, directory, reference format) combination. I am guessing that this is meant to work with the REF_URI thing, and the part in REF_URI=: corresponds to the "dir" parameter here. Looks like a good no-op split. > Signed-off-by: Karthik Nayak > --- > refs.c | 13 ++++++++++--- > 1 file changed, 10 insertions(+), 3 deletions(-) > > diff --git a/refs.c b/refs.c > index 965381367e..23f46867f2 100644 > --- a/refs.c > +++ b/refs.c > @@ -2177,6 +2177,15 @@ void ref_store_release(struct ref_store *ref_store) > free(ref_store->gitdir); > } > > +static struct ref_store *get_ref_store_for_dir(struct repository *r, > + char *dir, > + enum ref_storage_format format) > +{ > + struct ref_store *ref_store = ref_store_init(r, format, dir, > + REF_STORE_ALL_CAPS); > + return maybe_debug_wrap_ref_store(dir, ref_store); > +} > + > struct ref_store *get_main_ref_store(struct repository *r) > { > if (r->refs_private) > @@ -2185,9 +2194,7 @@ 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->ref_storage_format, > - r->gitdir, REF_STORE_ALL_CAPS); > - r->refs_private = maybe_debug_wrap_ref_store(r->gitdir, r->refs_private); > + r->refs_private = get_ref_store_for_dir(r, r->gitdir, r->ref_storage_format); > return r->refs_private; > }