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
=== modified file 'bzrlib/log.py'
--- bzrlib/log.py 2010-04-01 00:40:31 +0000
+++ bzrlib/log.py 2010-04-14 11:55:40 +0000
@@ -455,8 +455,10 @@
455 generate_merge_revisions = rqst.get('levels') != 1455 generate_merge_revisions = rqst.get('levels') != 1
456 delayed_graph_generation = not rqst.get('specific_fileids') and (456 delayed_graph_generation = not rqst.get('specific_fileids') and (
457 rqst.get('limit') or self.start_rev_id or self.end_rev_id)457 rqst.get('limit') or self.start_rev_id or self.end_rev_id)
458 view_revisions = _calc_view_revisions(self.branch, self.start_rev_id,458 view_revisions = _calc_view_revisions(
459 self.end_rev_id, rqst.get('direction'), generate_merge_revisions,459 self.branch, self.start_rev_id, self.end_rev_id,
460 rqst.get('direction'),
461 generate_merge_revisions=generate_merge_revisions,
460 delayed_graph_generation=delayed_graph_generation)462 delayed_graph_generation=delayed_graph_generation)
461463
462 # Apply the other filters464 # Apply the other filters
@@ -470,8 +472,9 @@
470 # Note that we always generate the merge revisions because472 # Note that we always generate the merge revisions because
471 # filter_revisions_touching_file_id() requires them ...473 # filter_revisions_touching_file_id() requires them ...
472 rqst = self.rqst474 rqst = self.rqst
473 view_revisions = _calc_view_revisions(self.branch, self.start_rev_id,475 view_revisions = _calc_view_revisions(
474 self.end_rev_id, rqst.get('direction'), True)476 self.branch, self.start_rev_id, self.end_rev_id,
477 rqst.get('direction'), generate_merge_revisions=True)
475 if not isinstance(view_revisions, list):478 if not isinstance(view_revisions, list):
476 view_revisions = list(view_revisions)479 view_revisions = list(view_revisions)
477 view_revisions = _filter_revisions_touching_file_id(self.branch,480 view_revisions = _filter_revisions_touching_file_id(self.branch,
@@ -488,23 +491,30 @@
488 :return: An iterator of (revision_id, dotted_revno, merge_depth) tuples OR491 :return: An iterator of (revision_id, dotted_revno, merge_depth) tuples OR
489 a list of the same tuples.492 a list of the same tuples.
490 """493 """
494 if direction not in ('reverse', 'forward'):
495 raise ValueError('invalid direction %r' % direction)
491 br_revno, br_rev_id = branch.last_revision_info()496 br_revno, br_rev_id = branch.last_revision_info()
492 if br_revno == 0:497 if br_revno == 0:
493 return []498 return []
494499
495 # If a single revision is requested, check we can handle it500 if (end_rev_id and start_rev_id == end_rev_id
496 generate_single_revision = (end_rev_id and start_rev_id == end_rev_id and501 and (not generate_merge_revisions
497 (not generate_merge_revisions or not _has_merges(branch, end_rev_id)))502 or not _has_merges(branch, end_rev_id))):
498 if generate_single_revision:503 # If a single revision is requested, check we can handle it
499 return _generate_one_revision(branch, end_rev_id, br_rev_id, br_revno)504 iter_revs = _generate_one_revision(branch, end_rev_id, br_rev_id,
500505 br_revno)
501 # If we only want to see linear revisions, we can iterate ...506 elif not generate_merge_revisions:
502 if not generate_merge_revisions:507 # If we only want to see linear revisions, we can iterate ...
503 return _generate_flat_revisions(branch, start_rev_id, end_rev_id,508 iter_revs = _generate_flat_revisions(branch, start_rev_id, end_rev_id,
504 direction)509 direction)
510 if direction == 'forward':
511 iter_revs = reversed(iter_revs)
505 else:512 else:
506 return _generate_all_revisions(branch, start_rev_id, end_rev_id,513 iter_revs = _generate_all_revisions(branch, start_rev_id, end_rev_id,
507 direction, delayed_graph_generation)514 direction, delayed_graph_generation)
515 if direction == 'forward':
516 iter_revs = _rebase_merge_depth(reverse_by_depth(list(iter_revs)))
517 return iter_revs
508518
509519
510def _generate_one_revision(branch, rev_id, br_rev_id, br_revno):520def _generate_one_revision(branch, rev_id, br_rev_id, br_revno):
@@ -528,8 +538,6 @@
528 except _StartNotLinearAncestor:538 except _StartNotLinearAncestor:
529 raise errors.BzrCommandError('Start revision not found in'539 raise errors.BzrCommandError('Start revision not found in'
530 ' left-hand history of end revision.')540 ' left-hand history of end revision.')
531 if direction == 'forward':
532 result = reversed(result)
533 return result541 return result
534542
535543
@@ -569,12 +577,7 @@
569 initial_revisions.append((rev_id, revno, depth))577 initial_revisions.append((rev_id, revno, depth))
570 else:578 else:
571 # No merged revisions found579 # No merged revisions found
572 if direction == 'reverse':580 return initial_revisions
573 return initial_revisions
574 elif direction == 'forward':
575 return reversed(initial_revisions)
576 else:
577 raise ValueError('invalid direction %r' % direction)
578 except _StartNotLinearAncestor:581 except _StartNotLinearAncestor:
579 # A merge was never detected so the lower revision limit can't582 # A merge was never detected so the lower revision limit can't
580 # be nested down somewhere583 # be nested down somewhere
@@ -592,14 +595,7 @@
592 view_revisions = chain(iter(initial_revisions),595 view_revisions = chain(iter(initial_revisions),
593 _graph_view_revisions(branch, start_rev_id, end_rev_id,596 _graph_view_revisions(branch, start_rev_id, end_rev_id,
594 rebase_initial_depths=(direction == 'reverse')))597 rebase_initial_depths=(direction == 'reverse')))
595 if direction == 'reverse':598 return view_revisions
596 return view_revisions
597 elif direction == 'forward':
598 # Forward means oldest first, adjusting for depth.
599 view_revisions = reverse_by_depth(list(view_revisions))
600 return _rebase_merge_depth(view_revisions)
601 else:
602 raise ValueError('invalid direction %r' % direction)
603599
604600
605def _has_merges(branch, rev_id):601def _has_merges(branch, rev_id):