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