~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/log.py

  • Committer: mbp at sourcefrog
  • Date: 2007-02-13 05:22:39 UTC
  • mfrom: (2279 +trunk)
  • mto: This revision was merged to the branch mainline in revision 2283.
  • Revision ID: mbp@sourcefrog.net-20070213052239-09atqsahwth6zdm1
(merge) trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
54
54
from itertools import izip
55
55
import re
56
56
 
57
 
from bzrlib import symbol_versioning
 
57
from bzrlib import(
 
58
    registry,
 
59
    symbol_versioning,
 
60
    )
58
61
import bzrlib.errors as errors
59
62
from bzrlib.symbol_versioning import deprecated_method, zero_eleven
60
63
from bzrlib.trace import mutter
296
299
    elif direction != 'reverse':
297
300
        raise ValueError('invalid direction %r' % direction)
298
301
 
299
 
    revision_history = branch.revision_history()
300
 
 
301
302
    for sequence, rev_id, merge_depth, revno, end_of_merge in merge_sorted_revisions:
302
303
        yield rev_id, '.'.join(map(str, revno)), merge_depth
303
304
 
461
462
    lf = LineLogFormatter(None)
462
463
    return lf.log_string(None, rev, max_chars)
463
464
 
464
 
FORMATTERS = {
465
 
              'long': LongLogFormatter,
466
 
              'short': ShortLogFormatter,
467
 
              'line': LineLogFormatter,
468
 
              }
 
465
 
 
466
class LogFormatterRegistry(registry.Registry):
 
467
    """Registry for log formatters"""
 
468
 
 
469
    def make_formatter(self, name, *args, **kwargs):
 
470
        """Construct a formatter from arguments.
 
471
 
 
472
        :param name: Name of the formatter to construct.  'short', 'long' and
 
473
            'line' are built-in.
 
474
        """
 
475
        return self.get(name)(*args, **kwargs)
 
476
 
 
477
    def get_default(self, branch):
 
478
        return self.get(branch.get_config().log_format())
 
479
 
 
480
 
 
481
log_formatter_registry = LogFormatterRegistry()
 
482
 
 
483
 
 
484
log_formatter_registry.register('short', ShortLogFormatter,
 
485
                                'Moderately short log format')
 
486
log_formatter_registry.register('long', LongLogFormatter,
 
487
                                'Detailed log format')
 
488
log_formatter_registry.register('line', LineLogFormatter,
 
489
                                'Log format with one line per revision')
 
490
 
469
491
 
470
492
def register_formatter(name, formatter):
471
 
    FORMATTERS[name] = formatter
 
493
    log_formatter_registry.register(name, formatter)
 
494
 
472
495
 
473
496
def log_formatter(name, *args, **kwargs):
474
497
    """Construct a formatter from arguments.
478
501
    """
479
502
    from bzrlib.errors import BzrCommandError
480
503
    try:
481
 
        return FORMATTERS[name](*args, **kwargs)
 
504
        return log_formatter_registry.make_formatter(name, *args, **kwargs)
482
505
    except KeyError:
483
506
        raise BzrCommandError("unknown log formatter: %r" % name)
484
507
 
 
508
 
485
509
def show_one_log(revno, rev, delta, verbose, to_file, show_timezone):
486
510
    # deprecated; for compatibility
487
511
    lf = LongLogFormatter(to_file=to_file, show_timezone=show_timezone)