~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/config.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2011-08-20 05:22:49 UTC
  • mfrom: (6046.2.11 54624-warn-on-large-files)
  • Revision ID: pqm@pqm.ubuntu.com-20110820052249-41vfmtn5g0i7ngqb
(jr) bzr add now skips large files in recursive mode. The default "large"
 size is 20MB, and is configurable via the add.maximum_file_size
 option. A value of 0 disables skipping. Named items passed to add are
 never skipped. (Shannon Weyrick, #54624) (Shannon Weyrick)

Show diffs side-by-side

added added

removed removed

Lines of Context:
75
75
import os
76
76
import string
77
77
import sys
 
78
import re
78
79
 
79
80
 
80
81
from bzrlib.decorators import needs_write_lock
413
414
            # add) the final ','
414
415
            l = [l]
415
416
        return l
 
417
        
 
418
    def get_user_option_as_int_from_SI(self,  option_name,  default=None):
 
419
        """Get a generic option from a human readable size in SI units, e.g 10MB
 
420
        
 
421
        Accepted suffixes are K,M,G. It is case-insensitive and may be followed
 
422
        by a trailing b (i.e. Kb, MB). This is intended to be practical and not
 
423
        pedantic.
 
424
        
 
425
        :return Integer, expanded to its base-10 value if a proper SI unit is 
 
426
            found. If the option doesn't exist, or isn't a value in 
 
427
            SI units, return default (which defaults to None)
 
428
        """
 
429
        val = self.get_user_option(option_name)
 
430
        if isinstance(val, list):
 
431
            val = val[0]
 
432
        if val is None:
 
433
            val = default
 
434
        else:
 
435
            p = re.compile("^(\d+)([kmg])*b*$", re.IGNORECASE)
 
436
            try:
 
437
                m = p.match(val)
 
438
                if m is not None:
 
439
                    val = int(m.group(1))
 
440
                    if m.group(2) is not None:
 
441
                        if m.group(2).lower() == 'k':
 
442
                            val *= 10**3
 
443
                        elif m.group(2).lower() == 'm':
 
444
                            val *= 10**6
 
445
                        elif m.group(2).lower() == 'g':
 
446
                            val *= 10**9
 
447
                else:
 
448
                    ui.ui_factory.show_warning('Invalid config value for "%s" '
 
449
                                               ' value %r is not an SI unit.'
 
450
                                                % (option_name, val))
 
451
                    val = default
 
452
            except TypeError:
 
453
                val = default
 
454
        return val
 
455
        
416
456
 
417
457
    def gpg_signing_command(self):
418
458
        """What program should be used to sign signatures?"""