Christian Couder <[email protected]> writes:
> From: Christian Couder <[email protected]>
>
> 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 <[email protected]>
> ---
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);