Re: [PATCH v7 29/33] setup: configure ref storage on setup
- From
Jeff King <peff@peff.net>
- Date
- Mar 1, 2016, 14:50 UTC
- Message-ID
- <20160301145048.GK12887@sigill.intra.peff.net>
- In-Reply-To
- <20160301084830.GB4952@sigill.intra.peff.net>
On Tue, Mar 01, 2016 at 03:48:30AM -0500, Jeff King wrote:
Show 28 quoted lines
> On Mon, Feb 29, 2016 at 07:53:02PM -0500, David Turner wrote:
>
> > diff --git a/setup.c b/setup.c
> > index bd3a2cf..e2e1220 100644
> > --- a/setup.c
> > +++ b/setup.c
> > @@ -457,6 +457,10 @@ static int check_repository_format_gently(const char *gitdir, int *nongit_ok)
> > ret = -1;
> > }
> >
> > + register_ref_storage_backends();
> > + if (set_ref_storage_backend(ref_storage_backend))
> > + die(_("Unknown ref storage backend %s"), ref_storage_backend);
> > +
> > strbuf_release(&sb);
> > return ret;
> > }
>
> Much nicer than the one it replaces, I think.
>
> This whole block should probably go inside
>
> if (ret == 0) {
> ...
> }
>
> If we are doing setup_git_repository_gently() and we do _not_ find a
> valid repository, we would not want to enable the ref storage.So in the new world order of the patch series I just posted, this would probably look like:
1. Add a ref_backend string to "struct repository_format", and parse it
in the callback. 2. The bottom of check_repository_format_gently() is only reached when
we have a workable repo. So from there, you can:set_ref_storage_backend(candidate.ref_backend);
I think you'd probably want to check nongit_ok before dying on
failure (even without my patches). 3. Elsewhere, you can use read_repository_format() to get the backend
speculatively (e.g., for submodules), rather than doing a custom
git_config_from_file invocation.None of which is to say that building on my series is a foregone conclusion; I just wanted to point you in the right direction if you do want to.
-Peff