From: Junio C Hamano Date: Wed, 13 Mar 2019 04:28:03 GMT Subject: Re: [PATCH v3 04/11] promisor-remote: add promisor_remote_reinit() Message-ID: In-Reply-To: <20190312132959.11764-5-chriscool@tuxfamily.org> Christian Couder writes: > From: Christian Couder > > 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 > --- 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);