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