Rev 4868: (igc) Fix logging too much (Marius Kruger, #325618, #484109) in file:///home/pqm/archives/thelove/bzr/%2Btrunk/
Canonical.com Patch Queue Manager
pqm at pqm.ubuntu.com
Fri Dec 4 23:17:36 GMT 2009
At file:///home/pqm/archives/thelove/bzr/%2Btrunk/
------------------------------------------------------------
revno: 4868 [merge]
revision-id: pqm at pqm.ubuntu.com-20091204231732-nbilalcmsekhl3li
parent: pqm at pqm.ubuntu.com-20091204214417-6qro8gecchba1s82
parent: ian.clatworthy at canonical.com-20091204221352-5ky1o5d31kqkvbge
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Fri 2009-12-04 23:17:32 +0000
message:
(igc) Fix logging too much (Marius Kruger, #325618, #484109)
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/branch.py branch.py-20050309040759-e4baf4e0d046576e
bzrlib/tests/blackbox/test_log.py test_log.py-20060112090212-78f6ea560c868e24
bzrlib/tests/per_branch/test_iter_merge_sorted_revisions.py test_merge_sorted_re-20090121004847-to3gvjwigstu93eh-1
=== modified file 'NEWS'
--- a/NEWS 2009-12-04 17:06:17 +0000
+++ b/NEWS 2009-12-04 22:13:52 +0000
@@ -42,6 +42,9 @@
* ``bzr ignore /`` no longer causes an IndexError. (Gorder Tyler, #456036)
+* ``bzr log -n0 -rN`` should not return revisions beyond its merged revisions.
+ (#325618, #484109, Marius Kruger)
+
* ``bzr mv --quiet`` really is quiet now. (Gordon Tyler, #271790)
* ``bzr serve`` is more clear about the risk of supplying --allow-writes.
=== modified file 'bzrlib/branch.py'
--- a/bzrlib/branch.py 2009-12-03 02:24:54 +0000
+++ b/bzrlib/branch.py 2009-12-04 22:13:52 +0000
@@ -503,12 +503,25 @@
left_parent = stop_rev.parent_ids[0]
else:
left_parent = _mod_revision.NULL_REVISION
+ # left_parent is the actual revision we want to stop logging at,
+ # since we want to show the merged revisions after the stop_rev too
+ reached_stop_revision_id = False
+ revision_id_whitelist = []
for node in rev_iter:
rev_id = node.key[-1]
if rev_id == left_parent:
+ # reached the left parent after the stop_revision
return
- yield (rev_id, node.merge_depth, node.revno,
+ if (not reached_stop_revision_id or
+ rev_id in revision_id_whitelist):
+ yield (rev_id, node.merge_depth, node.revno,
node.end_of_merge)
+ if reached_stop_revision_id or rev_id == stop_revision_id:
+ # only do the merged revs of rev_id from now on
+ rev = self.repository.get_revision(rev_id)
+ if rev.parent_ids:
+ reached_stop_revision_id = True
+ revision_id_whitelist.extend(rev.parent_ids)
else:
raise ValueError('invalid stop_rule %r' % stop_rule)
=== modified file 'bzrlib/tests/blackbox/test_log.py'
--- a/bzrlib/tests/blackbox/test_log.py 2009-06-10 03:56:49 +0000
+++ b/bzrlib/tests/blackbox/test_log.py 2009-11-01 03:45:20 +0000
@@ -536,6 +536,21 @@
"""
self.check_log(expected, ['-n0', '-r1.1.1..1.1.2'])
+ def test_merges_partial_range_ignore_before_lower_bound(self):
+ """Dont show revisions before the lower bound's merged revs"""
+ expected = """\
+ 2 Lorem Ipsum\t2005-11-22 [merge]
+ merge branch level1
+
+ 1.1.2 Lorem Ipsum\t2005-11-22 [merge]
+ merge branch level2
+
+ 1.2.1 Lorem Ipsum\t2005-11-22
+ in branch level2
+
+"""
+ self.check_log(expected, ['--short', '-n0', '-r1.1.2..2'])
+
class TestLogDiff(TestLog):
=== modified file 'bzrlib/tests/per_branch/test_iter_merge_sorted_revisions.py'
--- a/bzrlib/tests/per_branch/test_iter_merge_sorted_revisions.py 2009-07-10 05:49:34 +0000
+++ b/bzrlib/tests/per_branch/test_iter_merge_sorted_revisions.py 2009-12-03 23:34:38 +0000
@@ -84,6 +84,28 @@
], list(the_branch.iter_merge_sorted_revisions(
stop_revision_id='rev-3', stop_rule='with-merges')))
+ def test_merge_sorted_range_stop_with_merges_can_show_non_parents(self):
+ tree = self.create_tree_with_merge()
+ the_branch = tree.bzrdir.open_branch()
+ # rev-1.1.1 gets logged before the end revision is reached.
+ # so it is returned even though rev-1.1.1 is not a parent of rev-2.
+ self.assertEqual([
+ ('rev-3', 0, (3,), False),
+ ('rev-1.1.1', 1, (1,1,1), True),
+ ('rev-2', 0, (2,), False),
+ ], list(the_branch.iter_merge_sorted_revisions(
+ stop_revision_id='rev-2', stop_rule='with-merges')))
+
+ def test_merge_sorted_range_stop_with_merges_ignore_non_parents(self):
+ tree = self.create_tree_with_merge()
+ the_branch = tree.bzrdir.open_branch()
+ # rev-2 is not a parent of rev-1.1.1 so it must not be returned
+ self.assertEqual([
+ ('rev-3', 0, (3,), False),
+ ('rev-1.1.1', 1, (1,1,1), True),
+ ], list(the_branch.iter_merge_sorted_revisions(
+ stop_revision_id='rev-1.1.1', stop_rule='with-merges')))
+
def test_merge_sorted_single_stop_exclude(self):
# from X..X exclusive is an empty result
tree = self.create_tree_with_merge()
More information about the bazaar-commits
mailing list