From: Catalin Marinas Date: Fri, 26 Jan 2007 22:51:05 GMT Subject: Re: StGIT and repo-config Message-ID: In-Reply-To: <20070126175302.GG4083@nan92-1-81-57-214-146.fbx.proxad.net> On 26/01/07, Yann Dirson wrote: > On Fri, Jan 26, 2007 at 12:58:38AM +0100, Johannes Schindelin wrote: > > On Thu, 25 Jan 2007, Catalin Marinas wrote: > > > The dictionary should also be pre-populated with the default values > > > (only in memory, not going to the config file on disk). > > Pre-filling with default value has a drawback: it will create lots of > useless entries, especially for per-branch settings. I'd rather let > the accessors return the default value when needed. We can still > group all defaults in a single dictionnary. What I meant is that it should pre-fill only with the default entries needed by StGIT (probably around 10, see stgit.config.config_setup()). The rest should be filled in when reading the config files. > > The most important point (to me) which came out of the discussion: It is > > not at all easy, or straight-forward, to handle multi-vars, i.e. multiple > > values for the same key. > > Right, at least for filling a dictionnary. We would need to declare > multi-valued parameters as such, which basically means we must only > try to read those config items we know about, which has all sorts of > consequences for config.py :) But are multi-vars in the same file currently used? There is a clear situation when a key is written in both the global and the per-repository config files. From the StGIT point of view, it should only care about the most specific one, i.e. the one in the per-repo config and this would be the last one listed by git-repo-config (and therefore overriding any preceding dictionary entry). > It would seem reasonable to start without a cache dictionnary, at > least for now. After all, there are not so many config items to know > about in a single stgit run, so IIMHO we're only going to notice a > difference for the time needed to run the testsuite. I'd like to avoid calling git-repo-config for every config option, even if this wouldn't be noticeable (initially, but the tool would evolve). If we don't care about multi-vars, as I said above, a dictionary cache would make sense. -- Catalin