[Pkg-bazaar-commits] ./bzr/unstable r151: experimental nested-inventory load support

mbp at sourcefrog.net mbp at sourcefrog.net
Fri Apr 10 07:51:15 UTC 2009


------------------------------------------------------------
revno: 151
committer: mbp at sourcefrog.net
timestamp: Thu 2005-03-31 09:34:24 +1000
message:
  experimental nested-inventory load support
modified:
  bzrlib/commands.py
  bzrlib/newinventory.py
-------------- next part --------------
=== modified file 'bzrlib/commands.py'
--- a/bzrlib/commands.py	2005-03-30 22:27:17 +0000
+++ b/bzrlib/commands.py	2005-03-30 23:34:24 +0000
@@ -378,6 +378,11 @@
     import bzrlib.newinventory
     inv = Branch('.').basis_tree().inventory
     bzrlib.newinventory.write_inventory(inv, sys.stdout)
+
+
+def cmd_load_new_inventory():
+    import bzrlib.newinventory
+    bzrlib.newinventory.read_new_inventory(sys.stdin)
                 
     
 def cmd_dump_slacker_inventory():

=== modified file 'bzrlib/newinventory.py'
--- a/bzrlib/newinventory.py	2005-03-30 23:01:29 +0000
+++ b/bzrlib/newinventory.py	2005-03-30 23:34:24 +0000
@@ -93,8 +93,38 @@
     for entry_name, ie in l:
         descend(ie)
 
-    f.write('</root-directory>\n')
+    f.write('</root_directory>\n')
     f.write('</inventory>\n')
     
 
 
+def read_new_inventory(f):
+    from inventory import Inventory, InventoryEntry
+    
+    def descend(parent_ie, el):
+        kind = el.tag
+        name = el.get('name')
+        file_id = el.get('id')
+        ie = InventoryEntry(file_id, name, el.tag)
+        parent_ie.children[name] = ie
+        inv._byid[file_id] = ie
+        if kind == 'directory':
+            for child_el in el:
+                descend(ie, child_el)
+        elif kind == 'file':
+            assert len(el) == 0
+            ie.text_id = el.get('text_id')
+            v = el.get('text_size')
+            ie.text_size = v and int(v)
+            ie.text_sha1 = el.get('text_sha1')
+        else:
+            bailout("unknown inventory entry %r" % kind)
+
+    inv_el = ElementTree().parse(f)
+    assert inv_el.tag == 'inventory'
+    root_el = inv_el[0]
+    assert root_el.tag == 'root_directory'
+
+    inv = Inventory()
+    for el in root_el:
+        descend(inv._root, el)



More information about the Pkg-bazaar-commits mailing list