/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 bzrlib/bundle/serializer/v08.py

  • Committer: Andrew Bennetts
  • Date: 2007-03-28 07:08:42 UTC
  • mfrom: (2380 +trunk)
  • mto: (2018.5.146 hpss)
  • mto: This revision was merged to the branch mainline in revision 2414.
  • Revision ID: andrew.bennetts@canonical.com-20070328070842-r843houy668oxb9o
Merge from bzr.dev.

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
from bzrlib import errors
23
23
from bzrlib.bundle.serializer import (BundleSerializer,
24
24
                                      BUNDLE_HEADER,
25
 
                                      format_highres_date,
26
 
                                      unpack_highres_date,
27
25
                                     )
28
26
from bzrlib.bundle.serializer import binary_diff
29
27
from bzrlib.bundle.bundle_data import (RevisionInfo, BundleInfo, BundleTree)
34
32
from bzrlib.rio import RioWriter, read_stanzas
35
33
import bzrlib.ui
36
34
from bzrlib.testament import StrictTestament
 
35
from bzrlib.timestamp import (
 
36
    format_highres_date,
 
37
    unpack_highres_date,
 
38
)
37
39
from bzrlib.textfile import text_file
38
40
from bzrlib.trace import mutter
39
41
 
54
56
        else:
55
57
            self.properties = properties
56
58
 
 
59
    def add_utf8_property(self, name, value):
 
60
        """Add a property whose value is currently utf8 to the action."""
 
61
        self.properties.append((name, value.decode('utf8')))
 
62
 
57
63
    def add_property(self, name, value):
58
64
        """Add a property to the action"""
59
65
        self.properties.append((name, value))
138
144
        f.write(key.encode('utf-8'))
139
145
        if not value:
140
146
            f.write(':\n')
141
 
        elif isinstance(value, basestring):
 
147
        elif isinstance(value, str):
 
148
            f.write(': ')
 
149
            f.write(value)
 
150
            f.write('\n')
 
151
        elif isinstance(value, unicode):
142
152
            f.write(': ')
143
153
            f.write(value.encode('utf-8'))
144
154
            f.write('\n')
146
156
            f.write(':\n')
147
157
            for entry in value:
148
158
                f.write('#' + (' ' * (indent+2)))
149
 
                f.write(entry.encode('utf-8'))
 
159
                if isinstance(entry, str):
 
160
                    f.write(entry)
 
161
                else:
 
162
                    f.write(entry.encode('utf-8'))
150
163
                f.write('\n')
151
164
 
152
165
    def _write_revisions(self, pb):
156
169
        last_rev_id = None
157
170
        last_rev_tree = None
158
171
 
159
 
        i_max = len(self.revision_ids) 
 
172
        i_max = len(self.revision_ids)
160
173
        for i, rev_id in enumerate(self.revision_ids):
161
174
            pb.update("Generating revsion data", i, i_max)
162
175
            rev = self.source.get_revision(rev_id)
265
278
                          old_path, new_path):
266
279
            entry = new_tree.inventory[file_id]
267
280
            if entry.revision != default_revision_id:
268
 
                action.add_property('last-changed', entry.revision)
 
281
                action.add_utf8_property('last-changed', entry.revision)
269
282
            if meta_modified:
270
283
                action.add_bool_property('executable', entry.executable)
271
284
            if text_modified and kind == "symlink":
308
321
            if new_rev != old_rev:
309
322
                action = Action('modified', [ie.kind, 
310
323
                                             new_tree.id2path(ie.file_id)])
311
 
                action.add_property('last-changed', ie.revision)
 
324
                action.add_utf8_property('last-changed', ie.revision)
312
325
                action.write(self.to_file)
313
326
 
314
327
 
425
438
        revision_info = self.info.revisions[-1]
426
439
        if key in revision_info.__dict__:
427
440
            if getattr(revision_info, key) is None:
 
441
                if key in ('file_id', 'revision_id', 'base_id'):
 
442
                    value = value.encode('utf8')
 
443
                elif key in ('parent_ids'):
 
444
                    value = [v.encode('utf8') for v in value]
428
445
                setattr(revision_info, key, value)
429
446
            else:
430
447
                raise errors.MalformedHeader('Duplicated Key: %s' % key)