Re: [PATCH v7 29/33] setup: configure ref storage on setup

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Mar 01, 2016 at 03:48:30AM -0500, Jeff King wrote:

> 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
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]