Rev 3165: Make tree reference support optional. in http://people.ubuntu.com/~robertc/baz2.0/inventory.journalled
Robert Collins
robertc at robertcollins.net
Thu Jan 3 21:37:49 GMT 2008
At http://people.ubuntu.com/~robertc/baz2.0/inventory.journalled
------------------------------------------------------------
revno: 3165
revision-id:robertc at robertcollins.net-20080103213744-t4j7nsulqr2enn94
parent: robertc at robertcollins.net-20080103213044-ybeefdleu2fv7lfe
committer: Robert Collins <robertc at robertcollins.net>
branch nick: inventory.journalled
timestamp: Fri 2008-01-04 08:37:44 +1100
message:
Make tree reference support optional.
modified:
bzrlib/journalled_inventory.py journalled_inventory-20080103020931-0ht5n40kwc0p7fy1-1
bzrlib/tests/test_journalled_inv.py test_journalled_inv.-20080103012121-ny2w9slze5jgty8i-1
=== modified file 'bzrlib/journalled_inventory.py'
--- a/bzrlib/journalled_inventory.py 2008-01-03 21:26:03 +0000
+++ b/bzrlib/journalled_inventory.py 2008-01-03 21:37:44 +0000
@@ -79,13 +79,21 @@
FORMAT_1 = 'bzr journalled inventory v1 (bzr 1.1)'
- def __init__(self, versioned_root):
+ def __init__(self, versioned_root, tree_references):
"""Create an InventoryJournal.
:param versioned_root: If True, any root entry that is seen is expected
to be versioned, and root entries can have any fileid.
+ :param tree_references: If True support tree-reference entries.
"""
self._versioned_root = versioned_root
+ self._entry_to_content = {
+ 'directory': _directory_content,
+ 'file': _file_content,
+ 'symlink': _link_content,
+ }
+ if tree_references:
+ self._entry_to_content['tree-reference'] = _reference_content
def delta_to_lines(self, old_inventory_name, delta_to_new):
"""Return a line sequence for delta_to_new.
@@ -132,12 +140,6 @@
last_modified = NULL_REVISION
if last_modified is None:
raise errors.BzrError("no version for fileid %s" % file_id)
- self._entry_to_content = {
- 'directory': _directory_content,
- 'file': _file_content,
- 'symlink': _link_content,
- 'tree-reference': _reference_content,
- }
content = self._entry_to_content[entry.kind](entry)
return ("%s %s %s %s %s\n" %
(newpath_utf8, file_id, parent_id, last_modified, content))
=== modified file 'bzrlib/tests/test_journalled_inv.py'
--- a/bzrlib/tests/test_journalled_inv.py 2008-01-03 21:30:44 +0000
+++ b/bzrlib/tests/test_journalled_inv.py 2008-01-03 21:37:44 +0000
@@ -48,6 +48,13 @@
"""
root_only_lines_validator = ""
+reference_lines = """format: bzr journalled inventory v1 (bzr 1.1)
+parent: null:
+/ TREE_ROOT a at e\xe5ample.com--2004 dir
+/foo id TREE_ROOT changed tree subtree-version
+"""
+root_only_lines_validator = ""
+
class TestSerializer(TestCase):
"""Test journalled inventory serialisation."""
@@ -73,7 +80,8 @@
old_inv = Inventory(None)
new_inv = Inventory(None)
delta = self.make_inv_delta(old_inv, new_inv)
- journal = journalled_inventory.InventoryJournal(versioned_root=True)
+ journal = journalled_inventory.InventoryJournal(versioned_root=True,
+ tree_references=True)
self.assertEqual(StringIO(empty_lines).readlines(),
journal.delta_to_lines(NULL_REVISION, delta))
@@ -84,7 +92,8 @@
root.revision = 'a at e\xe5ample.com--2004'
new_inv.add(root)
delta = self.make_inv_delta(old_inv, new_inv)
- journal = journalled_inventory.InventoryJournal(versioned_root=True)
+ journal = journalled_inventory.InventoryJournal(versioned_root=True,
+ tree_references=True)
self.assertEqual(StringIO(root_only_lines).readlines(),
journal.delta_to_lines(NULL_REVISION, delta))
@@ -97,7 +106,8 @@
non_root = new_inv.make_entry('directory', 'foo', root.file_id, 'id')
new_inv.add(non_root)
delta = self.make_inv_delta(old_inv, new_inv)
- journal = journalled_inventory.InventoryJournal(versioned_root=True)
+ journal = journalled_inventory.InventoryJournal(versioned_root=True,
+ tree_references=True)
self.assertRaises(errors.BzrError,
journal.delta_to_lines, NULL_REVISION, delta)
@@ -107,7 +117,8 @@
root = new_inv.make_entry('directory', '', None, 'TREE_ROOT')
new_inv.add(root)
delta = self.make_inv_delta(old_inv, new_inv)
- journal = journalled_inventory.InventoryJournal(versioned_root=True)
+ journal = journalled_inventory.InventoryJournal(versioned_root=True,
+ tree_references=True)
self.assertRaises(errors.BzrError,
journal.delta_to_lines, NULL_REVISION, delta)
@@ -118,7 +129,8 @@
root.revision = 'a at e\xe5ample.com--2004'
new_inv.add(root)
delta = self.make_inv_delta(old_inv, new_inv)
- journal = journalled_inventory.InventoryJournal(versioned_root=False)
+ journal = journalled_inventory.InventoryJournal(versioned_root=False,
+ tree_references=True)
self.assertRaises(errors.BzrError,
journal.delta_to_lines, NULL_REVISION, delta)
@@ -128,7 +140,8 @@
root = new_inv.make_entry('directory', '', None, 'my-rich-root-id')
new_inv.add(root)
delta = self.make_inv_delta(old_inv, new_inv)
- journal = journalled_inventory.InventoryJournal(versioned_root=False)
+ journal = journalled_inventory.InventoryJournal(versioned_root=False,
+ tree_references=True)
self.assertRaises(errors.BzrError,
journal.delta_to_lines, NULL_REVISION, delta)
@@ -143,13 +156,49 @@
non_root.kind = 'strangelove'
new_inv.add(non_root)
delta = self.make_inv_delta(old_inv, new_inv)
- journal = journalled_inventory.InventoryJournal(versioned_root=True)
- # we expect keyerror because there is little value wrapping this.
- # This test aims to prove that it errors more than how it errors.
- self.assertRaises(KeyError,
- journal.delta_to_lines, NULL_REVISION, delta)
-
-# tree-reference when not enabled
+ journal = journalled_inventory.InventoryJournal(versioned_root=True,
+ tree_references=True)
+ # we expect keyerror because there is little value wrapping this.
+ # This test aims to prove that it errors more than how it errors.
+ self.assertRaises(KeyError,
+ journal.delta_to_lines, NULL_REVISION, delta)
+
+ def test_tree_reference_disabled(self):
+ old_inv = Inventory(None)
+ new_inv = Inventory(None)
+ root = new_inv.make_entry('directory', '', None, 'TREE_ROOT')
+ root.revision = 'a at e\xe5ample.com--2004'
+ new_inv.add(root)
+ non_root = new_inv.make_entry(
+ 'tree-reference', 'foo', root.file_id, 'id')
+ non_root.revision = 'changed'
+ non_root.reference_revision = 'subtree-version'
+ new_inv.add(non_root)
+ delta = self.make_inv_delta(old_inv, new_inv)
+ journal = journalled_inventory.InventoryJournal(versioned_root=True,
+ tree_references=False)
+ # we expect keyerror because there is little value wrapping this.
+ # This test aims to prove that it errors more than how it errors.
+ self.assertRaises(KeyError,
+ journal.delta_to_lines, NULL_REVISION, delta)
+
+ def test_tree_reference_enabled(self):
+ old_inv = Inventory(None)
+ new_inv = Inventory(None)
+ root = new_inv.make_entry('directory', '', None, 'TREE_ROOT')
+ root.revision = 'a at e\xe5ample.com--2004'
+ new_inv.add(root)
+ non_root = new_inv.make_entry(
+ 'tree-reference', 'foo', root.file_id, 'id')
+ non_root.revision = 'changed'
+ non_root.reference_revision = 'subtree-version'
+ new_inv.add(non_root)
+ delta = self.make_inv_delta(old_inv, new_inv)
+ journal = journalled_inventory.InventoryJournal(versioned_root=True,
+ tree_references=True)
+ self.assertEqual(StringIO(reference_lines).readlines(),
+ journal.delta_to_lines(NULL_REVISION, delta))
+
class TestContent(TestCase):
More information about the bazaar-commits
mailing list