Web lists-archives.com

Re: [PATCH v3 04/11] promisor-remote: add promisor_remote_reinit()




Christian Couder <christian.couder@xxxxxxxxx> writes:

> From: Christian Couder <christian.couder@xxxxxxxxx>
>
> 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@xxxxxxxxxxxxx>
> ---

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.

> -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.

>  }
>  
> +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);