Rev 3846: Superficial fix for bug #300055. in lp:~vila/bzr/300055-log-forward

Vincent Ladeuil v.ladeuil+lp at free.fr
Fri Nov 21 11:49:19 GMT 2008


At lp:~vila/bzr/300055-log-forward

------------------------------------------------------------
revno: 3846
revision-id: v.ladeuil+lp at free.fr-20081121114918-lekth2kvpncyiaqz
parent: v.ladeuil+lp at free.fr-20081121113943-j8kn351jm04k9qfq
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: 300055-log-forward
timestamp: Fri 2008-11-21 12:49:18 +0100
message:
  Superficial fix for bug #300055.
  
  * bzrlib/log.py:
  (calculate_view_revisions): Reformat condition.
  (_get_mainline_revs, _filter_revision_range): Fix whitespaces.
  (reverse_by_depth): Add comments and a superficial fix for bug
  #300055. The bug is deeper though, reverse_by_depth can be used on
  revision list in reverse chronological order *only* since they add
  dotted revnos *after* their children mainline revision.
  (LineLogFormatter.date_string): Fix whitespace.
-------------- next part --------------
=== modified file 'bzrlib/log.py'
--- a/bzrlib/log.py	2008-10-01 05:40:45 +0000
+++ b/bzrlib/log.py	2008-11-21 11:49:18 +0000
@@ -236,8 +236,10 @@
 def calculate_view_revisions(branch, start_revision, end_revision, direction,
                              specific_fileid, generate_merge_revisions,
                              allow_single_merge_revision):
-    if (not generate_merge_revisions and start_revision is end_revision is
-        None and direction == 'reverse' and specific_fileid is None):
+    if (    not generate_merge_revisions
+        and start_revision is end_revision is None
+        and direction == 'reverse'
+        and specific_fileid is None):
         return _linear_view_revisions(branch)
 
     mainline_revs, rev_nos, start_rev_id, end_rev_id = \
@@ -438,7 +440,7 @@
     # filtered later.
     # Also map the revisions to rev_ids, to be used in the later filtering
     # stage.
-    start_rev_id = None 
+    start_rev_id = None
     if start_revision is None:
         start_revno = 1
     else:
@@ -448,7 +450,7 @@
         else:
             branch.check_real_revno(start_revision)
             start_revno = start_revision
-    
+
     end_rev_id = None
     if end_revision is None:
         end_revno = branch_revno
@@ -507,7 +509,7 @@
 
     :return: The filtered view_revisions.
     """
-    if start_rev_id or end_rev_id: 
+    if start_rev_id or end_rev_id:
         revision_ids = [r for r, n, d in view_revisions]
         if start_rev_id:
             start_index = revision_ids.index(start_rev_id)
@@ -666,19 +668,27 @@
     revision of that depth.  There may be no topological justification for this,
     but it looks much nicer.
     """
+    # Add a fake revision at start so that we can always attached sub revisions
+    merge_sorted_revisions = [(None, None, _depth)] + merge_sorted_revisions
     zd_revisions = []
     for val in merge_sorted_revisions:
         if val[2] == _depth:
+            # Each revision at the current depth becomes a chunk grouping all
+            # higher depth revisions.
             zd_revisions.append([val])
         else:
             zd_revisions[-1].append(val)
     for revisions in zd_revisions:
         if len(revisions) > 1:
+            # We have higher depth revisions, let reverse them locally
             revisions[1:] = reverse_by_depth(revisions[1:], _depth + 1)
     zd_revisions.reverse()
     result = []
     for chunk in zd_revisions:
         result.extend(chunk)
+    if _depth == 0:
+        # Top level call, get rid of the fake revisions that have been added
+        result = [r for r in result if r[0] is not None and r[1] is not None]
     return result
 
 
@@ -861,7 +871,7 @@
         return str[:max_len-3]+'...'
 
     def date_string(self, rev):
-        return format_date(rev.timestamp, rev.timezone or 0, 
+        return format_date(rev.timestamp, rev.timezone or 0,
                            self.show_timezone, date_fmt="%Y-%m-%d",
                            show_offset=False)
 



More information about the bazaar-commits mailing list