~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/config.py

  • Committer: Patch Queue Manager
  • Date: 2012-03-08 19:00:04 UTC
  • mfrom: (6468.5.3 expand-default-true)
  • Revision ID: pqm@pqm.ubuntu.com-20120308190004-lcbg2t0ksaydkot2
(vila) This turns config option expansion on by default. (Vincent Ladeuil)

Show diffs side-by-side

added added

removed removed

Lines of Context:
195
195
        return self[section][name]
196
196
 
197
197
 
198
 
# FIXME: Until we can guarantee that each config file is loaded once and
199
 
# only once for a given bzrlib session, we don't want to re-read the file every
200
 
# time we query for an option so we cache the value (bad ! watch out for tests
201
 
# needing to restore the proper value). -- vila 20110219
202
 
_expand_default_value = None
203
 
def _get_expand_default_value():
204
 
    global _expand_default_value
205
 
    if _expand_default_value is not None:
206
 
        return _expand_default_value
207
 
    conf = GlobalConfig()
208
 
    # Note that we must not use None for the expand value below or we'll run
209
 
    # into infinite recursion. Using False really would be quite silly ;)
210
 
    expand = conf.get_user_option_as_bool('bzr.config.expand', expand=True)
211
 
    if expand is None:
212
 
        # This is an opt-in feature, you *really* need to clearly say you want
213
 
        # to activate it !
214
 
        expand = False
215
 
    _expand_default_value = expand
216
 
    return expand
217
 
 
218
 
 
219
198
class Config(object):
220
199
    """A configuration policy - what username, editor, gpg needs etc."""
221
200
 
373
352
        """Template method to provide a user option."""
374
353
        return None
375
354
 
376
 
    def get_user_option(self, option_name, expand=None):
 
355
    def get_user_option(self, option_name, expand=True):
377
356
        """Get a generic option - no special process, no default.
378
357
 
379
358
        :param option_name: The queried option.
382
361
 
383
362
        :returns: The value of the option.
384
363
        """
385
 
        if expand is None:
386
 
            expand = _get_expand_default_value()
387
364
        value = self._get_user_option(option_name)
388
365
        if expand:
389
366
            if isinstance(value, list):
637
614
        for (oname, value, section, conf_id, parser) in self._get_options():
638
615
            if oname.startswith('bzr.mergetool.'):
639
616
                tool_name = oname[len('bzr.mergetool.'):]
640
 
                tools[tool_name] = self.get_user_option(oname)
 
617
                tools[tool_name] = self.get_user_option(oname, False)
641
618
        trace.mutter('loaded merge tools: %r' % tools)
642
619
        return tools
643
620
 
3658
3635
            for store, section in sections():
3659
3636
                yield store, section
3660
3637
 
3661
 
    def get(self, name, expand=None, convert=True):
 
3638
    def get(self, name, expand=True, convert=True):
3662
3639
        """Return the *first* option value found in the sections.
3663
3640
 
3664
3641
        This is where we guarantee that sections coming from Store are loaded
3677
3654
        :returns: The value of the option.
3678
3655
        """
3679
3656
        # FIXME: No caching of options nor sections yet -- vila 20110503
3680
 
        if expand is None:
3681
 
            expand = _get_expand_default_value()
3682
3657
        value = None
3683
3658
        found_store = None # Where the option value has been found
3684
3659
        # If the option is registered, it may provide additional info about