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)
22
def write_inventory(writer, inventory):
23
s = Stanza(inventory_version=7)
24
writer.write_stanza(s)
26
for path, ie in inventory.iter_entries():
28
s.add(ie.kind, ie.file_id)
29
for attr in ['name', 'parent_id', 'revision', \
30
'text_sha1', 'text_size', 'executable', \
33
attr_val = getattr(ie, attr, None)
34
if attr == 'executable' and attr_val == 0:
36
if attr == 'parent_id' and attr_val == b'TREE_ROOT':
38
if attr_val is not None:
40
writer.write_stanza(s)
43
def read_inventory(inv_file):
44
"""Read inventory object from rio formatted inventory file"""
45
from breezy.bzr.inventory import Inventory, InventoryFile
46
s = read_stanza(inv_file)
47
assert s['inventory_version'] == 7
49
for s in read_stanzas(inv_file):
50
kind, file_id = s.items[0]
53
parent_id = s['parent_id']
55
ie = InventoryFile(file_id, s['name'], parent_id)
56
ie.text_sha1 = s['text_sha1']
57
ie.text_size = s['text_size']
59
raise NotImplementedError()