54
54
from itertools import izip
57
from bzrlib import symbol_versioning
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)
299
revision_history = branch.revision_history()
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
461
462
lf = LineLogFormatter(None)
462
463
return lf.log_string(None, rev, max_chars)
465
'long': LongLogFormatter,
466
'short': ShortLogFormatter,
467
'line': LineLogFormatter,
466
class LogFormatterRegistry(registry.Registry):
467
"""Registry for log formatters"""
469
def make_formatter(self, name, *args, **kwargs):
470
"""Construct a formatter from arguments.
472
:param name: Name of the formatter to construct. 'short', 'long' and
475
return self.get(name)(*args, **kwargs)
477
def get_default(self, branch):
478
return self.get(branch.get_config().log_format())
481
log_formatter_registry = LogFormatterRegistry()
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')
470
492
def register_formatter(name, formatter):
471
FORMATTERS[name] = formatter
493
log_formatter_registry.register(name, formatter)
473
496
def log_formatter(name, *args, **kwargs):
474
497
"""Construct a formatter from arguments.
479
502
from bzrlib.errors import BzrCommandError
481
return FORMATTERS[name](*args, **kwargs)
504
return log_formatter_registry.make_formatter(name, *args, **kwargs)
483
506
raise BzrCommandError("unknown log formatter: %r" % name)
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)