/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to tools/riodemo.py

  • Committer: John Arbash Meinel
  • Date: 2010-01-12 22:51:31 UTC
  • mto: This revision was merged to the branch mainline in revision 4955.
  • Revision ID: john@arbash-meinel.com-20100112225131-he8h411p6aeeb947
Delay grabbing an output stream until we actually go to show a diff.

This makes the test suite happy, but it also seems to be reasonable.
If we aren't going to write anything, we don't need to hold an
output stream open.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
 
 
3
 
 
4
# \subsection{Example usage}
 
5
 
6
# \textbf{XXX:} Move these to object serialization code. 
 
7
 
 
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)
 
20
 
 
21
def write_inventory(writer, inventory):
 
22
    s = Stanza(inventory_version=7)
 
23
    writer.write_stanza(s)
 
24
 
 
25
    for path, ie in inventory.iter_entries():
 
26
        s = Stanza()
 
27
        s.add(ie.kind, ie.file_id)
 
28
        for attr in ['name', 'parent_id', 'revision', \
 
29
                     'text_sha1', 'text_size', 'executable', \
 
30
                     'symlink_target', \
 
31
                     ]:
 
32
            attr_val = getattr(ie, attr, None)
 
33
            if attr == 'executable' and attr_val == 0:
 
34
                continue
 
35
            if attr == 'parent_id' and attr_val == 'TREE_ROOT':
 
36
                continue
 
37
            if attr_val is not None:
 
38
                s.add(attr, attr_val)
 
39
        writer.write_stanza(s)
 
40
 
 
41
 
 
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
 
47
    inv = Inventory()
 
48
    for s in read_stanzas(inv_file):
 
49
        kind, file_id = s.items[0]
 
50
        parent_id = None
 
51
        if 'parent_id' in s:
 
52
            parent_id = s['parent_id']
 
53
        if kind == 'file':
 
54
            ie = InventoryFile(file_id, s['name'], parent_id)
 
55
            ie.text_sha1 = s['text_sha1']
 
56
            ie.text_size = s['text_size']
 
57
        else:
 
58
            raise NotImplementedError()
 
59
        inv.add(ie)
 
60
    return inv