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