~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/xml.py

  • Committer: Martin Pool
  • Date: 2005-09-15 04:32:41 UTC
  • Revision ID: mbp@sourcefrog.net-20050915043239-f8f8978f485c1b85
- new weave based cleanup [broken]

  - don't do a simple comparison to the basis version, but rather take
    file merges into account.

  - do more generation of XML in memory rather than to temporary files

  - can now commit basic merges (not totally correctly though)

  - track file parent versions

  - new revision id derived from the supplied timestamp (if given),
    not the current timestamp

  - only write working inventory if there were changes caused by 
    deleted files

  - put back WorkingTree.get_file_size

  - methods to serialize to/from strings, as well as files.

Doesn't handle selective commit or proper merges yet.

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
# importing this module is fairly slow because it has to load several
23
23
# ElementTree bits
24
24
 
 
25
from bzrlib.trace import mutter, warning
 
26
 
25
27
try:
26
28
    from util.cElementTree import (ElementTree, SubElement, Element,
27
 
                                   XMLTreeBuilder)
 
29
                                   XMLTreeBuilder, fromstring, tostring)
28
30
except ImportError:
 
31
    warning('using slower ElementTree; consider installing cElementTree')
29
32
    from util.elementtree.ElementTree import (ElementTree, SubElement,
30
 
                                              Element, XMLTreeBuilder)
 
33
                                              Element, XMLTreeBuilder,
 
34
                                              fromstring, tostring)
31
35
 
32
36
from bzrlib.inventory import ROOT_ID, Inventory, InventoryEntry
33
37
from bzrlib.revision import Revision, RevisionReference        
41
45
        elt = self._pack_inventory(inv)
42
46
        self._write_element(elt, f)
43
47
 
 
48
    def write_inventory_to_string(self, inv):
 
49
        return tostring(self._pack_inventory(inv))
 
50
 
44
51
    def read_inventory_from_string(self, xml_string):
45
 
        return self._unpack_inventory(self._parse_string(xml_string))
 
52
        return self._unpack_inventory(fromstring(xml_string))
46
53
 
47
54
    def read_inventory(self, f):
48
55
        return self._unpack_inventory(self._read_element(f))
50
57
    def write_revision(self, rev, f):
51
58
        self._write_element(self._pack_revision(rev), f)
52
59
 
 
60
    def write_revision_to_string(self, rev):
 
61
        return tostring(self._pack_revision(rev), f)
 
62
 
53
63
    def read_revision(self, f):
54
64
        return self._unpack_revision(self._read_element(f))
55
65
 
56
66
    def read_revision_from_string(self, xml_string):
57
 
        return self._unpack_revision(self._parse_string(xml_string))
 
67
        return self._unpack_revision(fromstring(xml_string))
58
68
 
59
69
    def _write_element(self, elt, f):
60
70
        ElementTree(elt).write(f, 'utf-8')
63
73
    def _read_element(self, f):
64
74
        return ElementTree().parse(f)
65
75
 
66
 
    def _parse_string(self, xml_string):
67
 
        parser = XMLTreeBuilder()
68
 
        parser.feed(xml_string)
69
 
        return parser.close()
70
 
        
71
 
 
72
76
 
73
77
class _Serializer_v4(Serializer):
74
78
    """Version 0.0.4 serializer