Re: [PATCH v3 04/11] promisor-remote: add promisor_remote_reinit()
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Mar 13, 2019, 04:28 UTC
- Message-ID
- <xmqqlg1je6uk.fsf@gitster-ct.c.googlers.com>
- In-Reply-To
- <20190312132959.11764-5-chriscool@tuxfamily.org>
Christian Couder <christian.couder@gmail.com> writes:
Show 7 quoted lines
> From: Christian Couder <christian.couder@gmail.com> > > We will need to reinitialize the promisor remote configuration > as we will make some changes to it in a later commit. > > Signed-off-by: Christian Couder <chriscool@tuxfamily.org> > ---
At this point, turning "initialized" into a file-scope static, and building reinit as
void promisor_remote_reinit(void)
{
initialized = 0;
... clear existing "promisor" entries ...
promisor_remote_init();
}may make more sense.
Show 11 quoted lines
> -static void promisor_remote_init(void)
> +static void promisor_remote_do_init(int force)
> {
> static int initialized;
>
> - if (initialized)
> + if (!force && initialized)
> return;
> initialized = 1;
>
> git_config(promisor_remote_config, NULL);The promisors and promisors_tail would need to be reinitiazlied and existing elements on the list purged. Otherwise, after removing an entry from the configuration file, the entry will still stay around.
Show 27 quoted lines
> }
>
> +static inline void promisor_remote_init(void)
> +{
> + promisor_remote_do_init(0);
> +}
> +
> +void promisor_remote_reinit(void)
> +{
> + promisor_remote_do_init(1);
> +}
> +
> struct promisor_remote *promisor_remote_find(const char *remote_name)
> {
> promisor_remote_init();
> diff --git a/promisor-remote.h b/promisor-remote.h
> index f9f5825417..f96722bc66 100644
> --- a/promisor-remote.h
> +++ b/promisor-remote.h
> @@ -10,6 +10,7 @@ struct promisor_remote {
> struct promisor_remote *next;
> };
>
> +extern void promisor_remote_reinit(void);
> extern struct promisor_remote *promisor_remote_new(const char *remote_name);
> extern struct promisor_remote *promisor_remote_find(const char *remote_name);
> extern int has_promisor_remote(void);