Rev 2617: Support the restrict_revisions parameter to join on delta knits. in file:///data/jelmer/bzr/shallow/
Jelmer Vernooij
jelmer at samba.org
Sat Jul 14 10:20:35 BST 2007
At file:///data/jelmer/bzr/shallow/
------------------------------------------------------------
revno: 2617
revision-id: jelmer at samba.org-20070714092014-4max0g1y6yd7eb5e
parent: jelmer at samba.org-20070714083247-wael1kydpl431tyc
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: shallow
timestamp: Sat 2007-07-14 12:20:14 +0300
message:
Support the restrict_revisions parameter to join on delta knits.
modified:
bzrlib/knit.py knit.py-20051212171256-f056ac8f0fbe1bd9
bzrlib/tests/interversionedfile_implementations/test_join.py test_join.py-20060302012326-9b5e9b0f0a03fedc
bzrlib/tests/test_knit.py test_knit.py-20051212171302-95d4c00dd5f11f2b
=== modified file 'bzrlib/knit.py'
--- a/bzrlib/knit.py 2007-07-14 08:32:47 +0000
+++ b/bzrlib/knit.py 2007-07-14 09:20:14 +0000
@@ -1645,10 +1645,6 @@
if not version_ids:
return 0
- if restrict_revisions and self.source.delta:
- # Partial cloning from delta-knits is not supported yet
- raise errors.PartialCloningNotSupported(self)
-
pb = ui.ui_factory.nested_progress_bar()
try:
version_ids = list(version_ids)
@@ -1656,7 +1652,8 @@
version_ids.remove(None)
if restrict_revisions:
- self.source_ancestry = set(version_ids)
+ self.source_ancestry = set(
+ self.source._get_components_positions(version_ids).keys())
else:
self.source_ancestry = set(self.source.get_ancestry(version_ids))
this_versions = set(self.target._index.get_versions())
=== modified file 'bzrlib/tests/interversionedfile_implementations/test_join.py'
--- a/bzrlib/tests/interversionedfile_implementations/test_join.py 2007-07-13 17:14:44 +0000
+++ b/bzrlib/tests/interversionedfile_implementations/test_join.py 2007-07-14 09:20:14 +0000
@@ -74,8 +74,8 @@
except errors.PartialCloningNotSupported:
return # Not all VersionedFile implementations support
# restrict_revisions
- self.assertEquals(["r1", "r3"],
- f2.versions())
+ self.assertTrue("r1" in f2.versions())
+ self.assertTrue("r3" in f2.versions())
def test_gets_expected_inter_worker(self):
source = self.get_source()
=== modified file 'bzrlib/tests/test_knit.py'
--- a/bzrlib/tests/test_knit.py 2007-07-13 17:14:44 +0000
+++ b/bzrlib/tests/test_knit.py 2007-07-14 09:20:14 +0000
@@ -885,20 +885,27 @@
self.assertTrue(k2.has_version('text-c'))
def test_knit_join_restrict_delta(self):
- """Joining a knit with restrict_revisions set should error out on delta knits."""
+ """Joining with restrict_revisions set should never fetch more
+ fulltexts and deltas than required to reconstruct the requested
+ revisions."""
k1 = KnitVersionedFile('test1', get_transport('.'),
factory=KnitPlainFactory(), create=True)
+ k1._max_delta_chain = 3
k1.add_lines('text-a', [], split_lines(TEXT_1))
- k1.add_lines('text-b', ['text-a'], split_lines(TEXT_1))
- k1.add_lines('text-c', [], split_lines(TEXT_1))
+ k1.add_lines('text-c', ['text-a'], split_lines(TEXT_1))
k1.add_lines('text-d', ['text-c'], split_lines(TEXT_1))
- k1.add_lines('text-m', ['text-b', 'text-d'], split_lines(TEXT_1))
+ k1.add_lines('text-e', ['text-d'], split_lines(TEXT_2))
+ k1.add_lines('text-f', ['text-e'], split_lines(TEXT_1))
+
+ k1.add_lines('text-m', ['text-f', 'text-d'], split_lines(TEXT_1))
k2 = KnitVersionedFile('test2', get_transport('.'),
factory=KnitPlainFactory(), create=True)
- self.assertRaises(errors.PartialCloningNotSupported,
- k2.join, k1, version_ids=['text-m'], restrict_revisions=True)
+ k2.join(k1, version_ids=['text-m'], restrict_revisions=True)
+ self.assertEquals(['text-e', 'text-f', 'text-m'],
+ k2.versions())
+ self.assertEquals(TEXT_1, k2.get_text('text-m'))
def test_knit_join_restrict(self):
"""Joining a knit with restrict_revisions set should not copy any
More information about the bazaar-commits
mailing list