/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/log.py

  • Committer: Kent Gibson
  • Date: 2007-11-17 09:37:33 UTC
  • mto: This revision was merged to the branch mainline in revision 3067.
  • Revision ID: warthog618@gmail.com-20071117093733-r31dz89u600c6zxm
Support logging single merge revisions with short and line log formatters.

Show diffs side-by-side

added added

removed removed

Lines of Context:
187
187
             search=None,
188
188
             limit=None):
189
189
    """Worker function for show_log - see show_log."""
190
 
    from bzrlib.osutils import format_date
191
 
    from bzrlib.errors import BzrCheckError
192
 
    
193
 
    from warnings import warn
194
 
 
195
190
    if not isinstance(lf, LogFormatter):
 
191
        from warnings import warn
196
192
        warn("not a LogFormatter instance: %r" % lf)
197
193
 
198
194
    if specific_fileid:
232
228
    else:
233
229
        generate_merge_revisions = getattr(lf, 'supports_merge_revisions', 
234
230
                                           False)
 
231
    generate_single_revision = False
235
232
    if ((not generate_merge_revisions)
236
233
        and ((start_rev_id and (start_rev_id not in rev_nos))
237
234
            or (end_rev_id and (end_rev_id not in rev_nos)))):
238
 
        from bzrlib.errors import BzrCommandError
239
 
        raise BzrCommandError('Selected log formatter only supports '
240
 
            'mainline revisions.')
 
235
        generate_single_revision = ((start_rev_id == end_rev_id)
 
236
            and getattr(lf, 'supports_single_merge_revision', False))
 
237
        if not generate_single_revision:
 
238
            from bzrlib.errors import BzrCommandError
 
239
            raise BzrCommandError('Selected log formatter only supports '
 
240
                'mainline revisions.')
 
241
        generate_merge_revisions = generate_single_revision
241
242
    view_revs_iter = get_view_revisions(mainline_revs, rev_nos, branch,
242
243
                          direction, include_merges=generate_merge_revisions)
243
244
    view_revisions = _filter_revision_range(list(view_revs_iter),
244
245
                                            start_rev_id,
245
246
                                            end_rev_id)
 
247
    if view_revisions and generate_single_revision:
 
248
        view_revisions = view_revisions[0:1]
246
249
    if specific_fileid:
247
250
        view_revisions = _filter_revisions_touching_file_id(branch,
248
251
                                                         specific_fileid,
577
580
    - supports_delta must be True if this log formatter supports delta.
578
581
        Otherwise the delta attribute may not be populated.
579
582
    - supports_merge_revisions must be True if this log formatter supports 
580
 
        merge revisions.  If not, only mainline revisions (those 
581
 
        with merge_depth == 0) will be passed to the formatter.
 
583
        merge revisions.  If not, and if supports_single_merge_revisions is
 
584
        also not True, then only mainline revisions will be passed to the 
 
585
        formatter.
 
586
    - supports_single_merge_revision must be True if this log formatter
 
587
        supports logging only a single merge revision.  This flag is
 
588
        only relevant if supports_merge_revisions is not True.
582
589
    - supports_tags must be True if this log formatter supports tags.
583
590
        Otherwise the tags attribute may not be populated.
584
591
    """
670
677
class ShortLogFormatter(LogFormatter):
671
678
 
672
679
    supports_delta = True
 
680
    supports_single_merge_revision = True
673
681
 
674
682
    @deprecated_method(zero_seventeen)
675
683
    def show(self, revno, rev, delta):
711
719
 
712
720
class LineLogFormatter(LogFormatter):
713
721
 
 
722
    supports_single_merge_revision = True
 
723
 
714
724
    def __init__(self, *args, **kwargs):
715
725
        from bzrlib.osutils import terminal_width
716
726
        super(LineLogFormatter, self).__init__(*args, **kwargs)