~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/log.py

  • Committer: Robert Collins
  • Date: 2005-11-13 18:57:26 UTC
  • mfrom: (1185.31.9)
  • Revision ID: robertc@robertcollins.net-20051113185726-39ede10d746eee6d
Merge Johns current integration work.

Show diffs side-by-side

added added

removed removed

Lines of Context:
178
178
        warn("not a LogFormatter instance: %r" % lf)
179
179
 
180
180
    if specific_fileid:
181
 
        mutter('get log for file_id %r' % specific_fileid)
 
181
        mutter('get log for file_id %r', specific_fileid)
182
182
 
183
183
    if search is not None:
184
184
        import re
482
482
    # deprecated; for compatability
483
483
    lf = LongLogFormatter(to_file=to_file, show_timezone=show_timezone)
484
484
    lf.show(revno, rev, delta)
 
485
 
 
486
def show_changed_revisions(branch, old_rh, new_rh, to_file=None, log_format='long'):
 
487
    """Show the change in revision history comparing the old revision history to the new one.
 
488
 
 
489
    :param branch: The branch where the revisions exist
 
490
    :param old_rh: The old revision history
 
491
    :param new_rh: The new revision history
 
492
    :param to_file: A file to write the results to. If None, stdout will be used
 
493
    """
 
494
    if to_file is None:
 
495
        import sys
 
496
        import codecs
 
497
        import bzrlib
 
498
        to_file = codecs.getwriter(bzrlib.user_encoding)(sys.stdout, errors='replace')
 
499
    lf = log_formatter(log_format,
 
500
                       show_ids=False,
 
501
                       to_file=to_file,
 
502
                       show_timezone='original')
 
503
 
 
504
    # This is the first index which is different between
 
505
    # old and new
 
506
    base_idx = None
 
507
    for i in xrange(max(len(new_rh),
 
508
                        len(old_rh))):
 
509
        if (len(new_rh) <= i
 
510
            or len(old_rh) <= i
 
511
            or new_rh[i] != old_rh[i]):
 
512
            base_idx = i
 
513
            break
 
514
 
 
515
    if base_idx is None:
 
516
        to_file.write('Nothing seems to have changed\n')
 
517
        return
 
518
    ## TODO: It might be nice to do something like show_log
 
519
    ##       and show the merged entries. But since this is the
 
520
    ##       removed revisions, it shouldn't be as important
 
521
    if base_idx < len(old_rh):
 
522
        to_file.write('*'*60)
 
523
        to_file.write('\nRemoved Revisions:\n')
 
524
        for i in range(base_idx, len(old_rh)):
 
525
            rev = branch.get_revision(old_rh[i])
 
526
            lf.show(i+1, rev, None)
 
527
        to_file.write('*'*60)
 
528
        to_file.write('\n\n')
 
529
    if base_idx < len(new_rh):
 
530
        to_file.write('Added Revisions:\n')
 
531
        show_log(branch,
 
532
                 lf,
 
533
                 None,
 
534
                 verbose=True,
 
535
                 direction='forward',
 
536
                 start_revision=base_idx+1,
 
537
                 end_revision=len(new_rh),
 
538
                 search=None)
 
539