~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/revision.py

  • Committer: mbp at sourcefrog
  • Date: 2005-03-23 23:52:10 UTC
  • Revision ID: mbp@sourcefrog.net-20050323235210-5464746b93c39ed0
more notes on darcs

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
 
18
18
 
19
19
 
 
20
 
20
21
from xml import XMLMixin
21
 
from ElementTree import Element, ElementTree, SubElement
 
22
 
 
23
try:
 
24
    from cElementTree import Element, ElementTree, SubElement
 
25
except ImportError:
 
26
    from elementtree.ElementTree import Element, ElementTree, SubElement
 
27
 
22
28
 
23
29
class Revision(XMLMixin):
24
30
    """Single revision on a branch.
34
40
        self.revision_id = None
35
41
        self.timestamp = None
36
42
        self.message = None
 
43
        self.timezone = None
37
44
        self.__dict__.update(args)
38
45
 
39
46
 
43
50
 
44
51
        
45
52
    def to_element(self):
46
 
        root = Element('changeset',
 
53
        root = Element('revision',
47
54
                       committer = self.committer,
48
 
                       timestamp = '%f' % self.timestamp,
 
55
                       timestamp = '%.9f' % self.timestamp,
49
56
                       revision_id = self.revision_id,
50
 
                       inventory_id = self.inventory_id)
 
57
                       inventory_id = self.inventory_id,
 
58
                       timezone = str(self.timezone))
51
59
        if self.precursor:
52
60
            root.set('precursor', self.precursor)
53
61
        root.text = '\n'
58
66
 
59
67
        return root
60
68
 
61
 
    def from_element(cls, root):
62
 
        cs = cls(committer = root.get('committer'),
63
 
                 timestamp = float(root.get('timestamp')),
64
 
                 precursor = root.get('precursor'),
65
 
                 revision_id = root.get('revision_id'),
66
 
                 inventory_id = root.get('inventory_id'))
67
 
 
68
 
        cs.message = root.findtext('message') # text of <message>
 
69
 
 
70
    def from_element(cls, elt):
 
71
        # <changeset> is deprecated...
 
72
        if elt.tag not in ('revision', 'changeset'):
 
73
            bailout("unexpected tag in revision file: %r" % elt)
 
74
 
 
75
        cs = cls(committer = elt.get('committer'),
 
76
                 timestamp = float(elt.get('timestamp')),
 
77
                 precursor = elt.get('precursor'),
 
78
                 revision_id = elt.get('revision_id'),
 
79
                 inventory_id = elt.get('inventory_id'))
 
80
 
 
81
        v = elt.get('timezone')
 
82
        cs.timezone = v and int(v)
 
83
 
 
84
        cs.message = elt.findtext('message') # text of <message>
69
85
        return cs
70
86
 
71
87
    from_element = classmethod(from_element)