Merge lp:~vila/bzr/cleanup-log-direction into lp:bzr

Proposed by Vincent Ladeuil
Status: Merged
Approved by: Robert Collins
Approved revision: no longer in the source branch.
Merged at revision: not available
Proposed branch: lp:~vila/bzr/cleanup-log-direction
Merge into: lp:bzr
Diff against target: 110 lines (+28/-32)
1 file modified
bzrlib/log.py (+28/-32)
To merge this branch: bzr merge lp:~vila/bzr/cleanup-log-direction
Reviewer Review Type Date Requested Status
bzr-core Pending
Review via email: mp+23382@code.launchpad.net

Commit message

Slight refactoring of direction handling in log code.

Description of the change

This is slight refactoring in our log code to make a further submission clearer.

To post a comment you must log in.
Revision history for this message
Robert Collins (lifeless) wrote :

Queued on 2010-04-14 12:20:41.104868+00:00 now submitted to PQM.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'bzrlib/log.py'
2--- bzrlib/log.py 2010-04-01 00:40:31 +0000
3+++ bzrlib/log.py 2010-04-14 11:55:40 +0000
4@@ -455,8 +455,10 @@
5 generate_merge_revisions = rqst.get('levels') != 1
6 delayed_graph_generation = not rqst.get('specific_fileids') and (
7 rqst.get('limit') or self.start_rev_id or self.end_rev_id)
8- view_revisions = _calc_view_revisions(self.branch, self.start_rev_id,
9- self.end_rev_id, rqst.get('direction'), generate_merge_revisions,
10+ view_revisions = _calc_view_revisions(
11+ self.branch, self.start_rev_id, self.end_rev_id,
12+ rqst.get('direction'),
13+ generate_merge_revisions=generate_merge_revisions,
14 delayed_graph_generation=delayed_graph_generation)
15
16 # Apply the other filters
17@@ -470,8 +472,9 @@
18 # Note that we always generate the merge revisions because
19 # filter_revisions_touching_file_id() requires them ...
20 rqst = self.rqst
21- view_revisions = _calc_view_revisions(self.branch, self.start_rev_id,
22- self.end_rev_id, rqst.get('direction'), True)
23+ view_revisions = _calc_view_revisions(
24+ self.branch, self.start_rev_id, self.end_rev_id,
25+ rqst.get('direction'), generate_merge_revisions=True)
26 if not isinstance(view_revisions, list):
27 view_revisions = list(view_revisions)
28 view_revisions = _filter_revisions_touching_file_id(self.branch,
29@@ -488,23 +491,30 @@
30 :return: An iterator of (revision_id, dotted_revno, merge_depth) tuples OR
31 a list of the same tuples.
32 """
33+ if direction not in ('reverse', 'forward'):
34+ raise ValueError('invalid direction %r' % direction)
35 br_revno, br_rev_id = branch.last_revision_info()
36 if br_revno == 0:
37 return []
38
39- # If a single revision is requested, check we can handle it
40- generate_single_revision = (end_rev_id and start_rev_id == end_rev_id and
41- (not generate_merge_revisions or not _has_merges(branch, end_rev_id)))
42- if generate_single_revision:
43- return _generate_one_revision(branch, end_rev_id, br_rev_id, br_revno)
44-
45- # If we only want to see linear revisions, we can iterate ...
46- if not generate_merge_revisions:
47- return _generate_flat_revisions(branch, start_rev_id, end_rev_id,
48- direction)
49+ if (end_rev_id and start_rev_id == end_rev_id
50+ and (not generate_merge_revisions
51+ or not _has_merges(branch, end_rev_id))):
52+ # If a single revision is requested, check we can handle it
53+ iter_revs = _generate_one_revision(branch, end_rev_id, br_rev_id,
54+ br_revno)
55+ elif not generate_merge_revisions:
56+ # If we only want to see linear revisions, we can iterate ...
57+ iter_revs = _generate_flat_revisions(branch, start_rev_id, end_rev_id,
58+ direction)
59+ if direction == 'forward':
60+ iter_revs = reversed(iter_revs)
61 else:
62- return _generate_all_revisions(branch, start_rev_id, end_rev_id,
63- direction, delayed_graph_generation)
64+ iter_revs = _generate_all_revisions(branch, start_rev_id, end_rev_id,
65+ direction, delayed_graph_generation)
66+ if direction == 'forward':
67+ iter_revs = _rebase_merge_depth(reverse_by_depth(list(iter_revs)))
68+ return iter_revs
69
70
71 def _generate_one_revision(branch, rev_id, br_rev_id, br_revno):
72@@ -528,8 +538,6 @@
73 except _StartNotLinearAncestor:
74 raise errors.BzrCommandError('Start revision not found in'
75 ' left-hand history of end revision.')
76- if direction == 'forward':
77- result = reversed(result)
78 return result
79
80
81@@ -569,12 +577,7 @@
82 initial_revisions.append((rev_id, revno, depth))
83 else:
84 # No merged revisions found
85- if direction == 'reverse':
86- return initial_revisions
87- elif direction == 'forward':
88- return reversed(initial_revisions)
89- else:
90- raise ValueError('invalid direction %r' % direction)
91+ return initial_revisions
92 except _StartNotLinearAncestor:
93 # A merge was never detected so the lower revision limit can't
94 # be nested down somewhere
95@@ -592,14 +595,7 @@
96 view_revisions = chain(iter(initial_revisions),
97 _graph_view_revisions(branch, start_rev_id, end_rev_id,
98 rebase_initial_depths=(direction == 'reverse')))
99- if direction == 'reverse':
100- return view_revisions
101- elif direction == 'forward':
102- # Forward means oldest first, adjusting for depth.
103- view_revisions = reverse_by_depth(list(view_revisions))
104- return _rebase_merge_depth(view_revisions)
105- else:
106- raise ValueError('invalid direction %r' % direction)
107+ return view_revisions
108
109
110 def _has_merges(branch, rev_id):