~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/config.py

  • Committer: Martin Pool
  • Date: 2011-07-04 21:10:37 UTC
  • mto: (6034.1.1 filter-tree)
  • mto: This revision was merged to the branch mainline in revision 6035.
  • Revision ID: mbp@canonical.com-20110704211037-ro3417imj3oqnqxp
Support exporting tarballs from ContentFilterTree

Show diffs side-by-side

added added

removed removed

Lines of Context:
31
31
log_format=name-of-format
32
32
validate_signatures_in_log=true|false(default)
33
33
acceptable_keys=pattern1,pattern2
34
 
gpg_signing_key=amy@example.com
35
34
 
36
35
in locations.conf, you specify the url of a branch and options for it.
37
36
Wildcards may be used - * and ? as normal in shell completion. Options
537
536
            return True
538
537
        return False
539
538
 
540
 
    def gpg_signing_key(self):
541
 
        """GPG user-id to sign commits"""
542
 
        key = self.get_user_option('gpg_signing_key')
543
 
        if key == "default" or key == None:
544
 
            return self.user_email()
545
 
        else:
546
 
            return key
547
 
 
548
539
    def get_alias(self, value):
549
540
        return self._get_alias(value)
550
541
 
1513
1504
            raise errors.BzrError('You must have one of BZR_HOME, APPDATA,'
1514
1505
                                  ' or HOME set')
1515
1506
        return osutils.pathjoin(base, 'bazaar', '2.0')
1516
 
    else:
1517
 
        if base is not None:
1518
 
            base = base.decode(osutils._fs_enc)
1519
 
    if sys.platform == 'darwin':
 
1507
    elif sys.platform == 'darwin':
1520
1508
        if base is None:
1521
1509
            # this takes into account $HOME
1522
1510
            base = os.path.expanduser("~")
1523
1511
        return osutils.pathjoin(base, '.bazaar')
1524
1512
    else:
1525
1513
        if base is None:
 
1514
 
1526
1515
            xdg_dir = os.environ.get('XDG_CONFIG_HOME', None)
1527
1516
            if xdg_dir is None:
1528
1517
                xdg_dir = osutils.pathjoin(os.path.expanduser("~"), ".config")
1531
1520
                trace.mutter(
1532
1521
                    "Using configuration in XDG directory %s." % xdg_dir)
1533
1522
                return xdg_dir
 
1523
 
1534
1524
            base = os.path.expanduser("~")
1535
1525
        return osutils.pathjoin(base, ".bazaar")
1536
1526
 
2275
2265
    value, in which config files it can be stored, etc (TBC).
2276
2266
    """
2277
2267
 
2278
 
    def __init__(self, name, default=None, help=None):
 
2268
    def __init__(self, name, default=None):
2279
2269
        self.name = name
2280
2270
        self.default = default
2281
 
        self.help = help
2282
2271
 
2283
2272
    def get_default(self):
2284
2273
        return self.default
2285
2274
 
2286
2275
 
2287
 
class OptionRegistry(registry.Registry):
2288
 
    """Register config options by their name.
2289
 
 
2290
 
    This overrides ``registry.Registry`` to simplify registration by acquiring
2291
 
    some information from the option object itself.
2292
 
    """
2293
 
 
2294
 
    def register(self, option):
2295
 
        """Register a new option to its name.
2296
 
 
2297
 
        :param option: The option to register. Its name is used as the key.
2298
 
        """
2299
 
        super(OptionRegistry, self).register(option.name, option,
2300
 
                                             help=option.help)
2301
 
 
2302
 
    def register_lazy(self, key, module_name, member_name):
2303
 
        """Register a new option to be loaded on request.
2304
 
 
2305
 
        :param key: This is the key to use to request the option later. Since
2306
 
            the registration is lazy, it should be provided and match the
2307
 
            option name.
2308
 
 
2309
 
        :param module_name: The python path to the module. Such as 'os.path'.
2310
 
 
2311
 
        :param member_name: The member of the module to return.  If empty or
2312
 
                None, get() will return the module itself.
2313
 
        """
2314
 
        super(OptionRegistry, self).register_lazy(key,
2315
 
                                                  module_name, member_name)
2316
 
 
2317
 
    def get_help(self, key=None):
2318
 
        """Get the help text associated with the given key"""
2319
 
        option = self.get(key)
2320
 
        the_help = option.help
2321
 
        if callable(the_help):
2322
 
            return the_help(self, key)
2323
 
        return the_help
2324
 
 
2325
 
 
2326
 
option_registry = OptionRegistry()
2327
 
 
2328
 
 
2329
 
# Registered options in lexicographical order
2330
 
 
2331
 
option_registry.register(
2332
 
    Option('dirstate.fdatasync', default=True,
2333
 
           help='''
2334
 
Flush dirstate changes onto physical disk?
2335
 
 
2336
 
If true (default), working tree metadata changes are flushed through the
2337
 
OS buffers to physical disk.  This is somewhat slower, but means data
2338
 
should not be lost if the machine crashes.  See also repository.fdatasync.
2339
 
'''))
2340
 
option_registry.register(
2341
 
    Option('default_format', default='2a',
2342
 
           help='Format used when creating branches.'))
2343
 
option_registry.register(
2344
 
    Option('editor',
2345
 
           help='The command called to launch an editor to enter a message.'))
2346
 
option_registry.register(
2347
 
    Option('language',
2348
 
           help='Language to translate messages into.'))
2349
 
option_registry.register(
2350
 
    Option('output_encoding',
2351
 
           help= 'Unicode encoding for output'
2352
 
           ' (terminal encoding if not specified).'))
2353
 
option_registry.register(
2354
 
    Option('repository.fdatasync', default=True,
2355
 
           help='''\
2356
 
Flush repository changes onto physical disk?
2357
 
 
2358
 
If true (default), repository changes are flushed through the OS buffers
2359
 
to physical disk.  This is somewhat slower, but means data should not be
2360
 
lost if the machine crashes.  See also dirstate.fdatasync.
2361
 
'''))
 
2276
# Options registry
 
2277
 
 
2278
option_registry = registry.Registry()
 
2279
 
 
2280
 
 
2281
option_registry.register(
 
2282
    'editor', Option('editor'),
 
2283
    help='The command called to launch an editor to enter a message.')
2362
2284
 
2363
2285
 
2364
2286
class Section(object):
2631
2553
class GlobalStore(LockableIniFileStore):
2632
2554
 
2633
2555
    def __init__(self, possible_transports=None):
2634
 
        t = transport.get_transport_from_path(
2635
 
            config_dir(), possible_transports=possible_transports)
 
2556
        t = transport.get_transport(config_dir(),
 
2557
                                    possible_transports=possible_transports)
2636
2558
        super(GlobalStore, self).__init__(t, 'bazaar.conf')
2637
2559
 
2638
2560
 
2639
2561
class LocationStore(LockableIniFileStore):
2640
2562
 
2641
2563
    def __init__(self, possible_transports=None):
2642
 
        t = transport.get_transport_from_path(
2643
 
            config_dir(), possible_transports=possible_transports)
 
2564
        t = transport.get_transport(config_dir(),
 
2565
                                    possible_transports=possible_transports)
2644
2566
        super(LocationStore, self).__init__(t, 'locations.conf')
2645
2567
 
2646
2568
 
2890
2812
class LocationStack(_CompatibleStack):
2891
2813
 
2892
2814
    def __init__(self, location):
2893
 
        """Make a new stack for a location and global configuration.
2894
 
        
2895
 
        :param location: A URL prefix to """
2896
2815
        lstore = LocationStore()
2897
2816
        matcher = LocationMatcher(lstore, location)
2898
2817
        gstore = GlobalStore()