~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/bundle/serializer/v08.py

  • Committer: John Arbash Meinel
  • Date: 2007-03-14 20:47:17 UTC
  • mto: (2353.4.2 locking)
  • mto: This revision was merged to the branch mainline in revision 2360.
  • Revision ID: john@arbash-meinel.com-20070314204717-htynwogv97fqr22a
Cleanup errors, and change ReadOnlyLockError to pass around more details.

Show diffs side-by-side

added added

removed removed

Lines of Context:
21
21
 
22
22
from bzrlib import errors
23
23
from bzrlib.bundle.serializer import (BundleSerializer,
24
 
                                      _get_bundle_header,
 
24
                                      BUNDLE_HEADER,
25
25
                                     )
26
26
from bzrlib.bundle.serializer import binary_diff
27
27
from bzrlib.bundle.bundle_data import (RevisionInfo, BundleInfo, BundleTree)
29
29
from bzrlib.osutils import pathjoin
30
30
from bzrlib.progress import DummyProgress
31
31
from bzrlib.revision import NULL_REVISION
 
32
from bzrlib.rio import RioWriter, read_stanzas
32
33
import bzrlib.ui
33
34
from bzrlib.testament import StrictTestament
34
35
from bzrlib.timestamp import (
128
129
        finally:
129
130
            source.unlock()
130
131
 
131
 
    def write_bundle(self, repository, target, base, fileobj):
132
 
        return self._write_bundle(repository, target, base, fileobj)
133
 
 
134
132
    def _write_main_header(self):
135
133
        """Write the header for the changes"""
136
134
        f = self.to_file
137
 
        f.write(_get_bundle_header('0.8'))
 
135
        f.write(BUNDLE_HEADER)
 
136
        f.write('0.8\n')
138
137
        f.write('#\n')
139
138
 
140
 
    def _write(self, key, value, indent=1, trailing_space_when_empty=False):
141
 
        """Write out meta information, with proper indenting, etc.
142
 
 
143
 
        :param trailing_space_when_empty: To work around a bug in earlier
144
 
            bundle readers, when writing an empty property, we use "prop: \n"
145
 
            rather than writing "prop:\n".
146
 
            If this parameter is True, and value is the empty string, we will
147
 
            write an extra space.
148
 
        """
 
139
    def _write(self, key, value, indent=1):
 
140
        """Write out meta information, with proper indenting, etc"""
149
141
        assert indent > 0, 'indentation must be greater than 0'
150
142
        f = self.to_file
151
143
        f.write('#' + (' ' * indent))
152
144
        f.write(key.encode('utf-8'))
153
145
        if not value:
154
 
            if trailing_space_when_empty and value == '':
155
 
                f.write(': \n')
156
 
            else:
157
 
                f.write(':\n')
 
146
            f.write(':\n')
158
147
        elif isinstance(value, str):
159
148
            f.write(': ')
160
149
            f.write(value)
237
226
            w('base id', base_rev)
238
227
        if rev.properties:
239
228
            self._write('properties', None, indent=1)
240
 
            for name, value in sorted(rev.properties.items()):
241
 
                self._write(name, value, indent=3,
242
 
                            trailing_space_when_empty=True)
 
229
            for name, value in rev.properties.items():
 
230
                self._write(name, value, indent=3)
243
231
        
244
232
        # Add an extra blank space at the end
245
233
        self.to_file.write('\n')
541
529
                self._next().next()
542
530
                break
543
531
 
 
532
 
544
533
class BundleInfo08(BundleInfo):
545
534
 
546
535
    def _update_tree(self, bundle_tree, revision_id):