4
 
# \subsection{Example usage}
 
6
 
# \textbf{XXX:} Move these to object serialization code. 
 
8
 
def write_revision(writer, revision):
 
9
 
    s = Stanza(revision=revision.revision_id,
 
10
 
               committer=revision.committer, 
 
11
 
               timezone=long(revision.timezone),
 
12
 
               timestamp=long(revision.timestamp),
 
13
 
               inventory_sha1=revision.inventory_sha1,
 
14
 
               message=revision.message)
 
15
 
    for parent_id in revision.parent_ids:
 
16
 
        s.add('parent', parent_id)
 
17
 
    for prop_name, prop_value in revision.properties.items():
 
18
 
        s.add(prop_name, prop_value)
 
19
 
    writer.write_stanza(s)
 
21
 
def write_inventory(writer, inventory):
 
22
 
    s = Stanza(inventory_version=7)
 
23
 
    writer.write_stanza(s)
 
25
 
    for path, ie in inventory.iter_entries():
 
27
 
        s.add(ie.kind, ie.file_id)
 
28
 
        for attr in ['name', 'parent_id', 'revision', \
 
29
 
                     'text_sha1', 'text_size', 'executable', \
 
32
 
            attr_val = getattr(ie, attr, None)
 
33
 
            if attr == 'executable' and attr_val == 0:
 
35
 
            if attr == 'parent_id' and attr_val == 'TREE_ROOT':
 
37
 
            if attr_val is not None:
 
39
 
        writer.write_stanza(s)
 
42
 
def read_inventory(inv_file):
 
43
 
    """Read inventory object from rio formatted inventory file"""
 
44
 
    from bzrlib.inventory import Inventory, InventoryFile
 
45
 
    s = read_stanza(inv_file)
 
46
 
    assert s['inventory_version'] == 7
 
48
 
    for s in read_stanzas(inv_file):
 
49
 
        kind, file_id = s.items[0]
 
52
 
            parent_id = s['parent_id']
 
54
 
            ie = InventoryFile(file_id, s['name'], parent_id)
 
55
 
            ie.text_sha1 = s['text_sha1']
 
56
 
            ie.text_size = s['text_size']
 
58
 
            raise NotImplementedError()