~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

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

  • Committer: Aaron Bentley
  • Date: 2006-05-30 15:18:12 UTC
  • mto: This revision was merged to the branch mainline in revision 1738.
  • Revision ID: abentley@panoramicfeedback.com-20060530151812-0e3e9b78cc15a804
Rename changesets to revision bundles

Show diffs side-by-side

added added

removed removed

Lines of Context:
14
14
# along with this program; if not, write to the Free Software
15
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
 
17
 
"""Serializer factory for reading and writing changesets.
 
17
"""Serializer factory for reading and writing bundles.
18
18
"""
19
19
 
20
20
import base64
25
25
from bzrlib.diff import internal_diff
26
26
from bzrlib.revision import NULL_REVISION
27
27
 
28
 
# New changesets should try to use this header format
29
 
CHANGESET_HEADER = '# Bazaar changeset v'
30
 
CHANGESET_HEADER_RE = re.compile(r'^# Bazaar changeset v(?P<version>\d+[\w.]*)\n$')
 
28
# New bundles should try to use this header format
 
29
BUNDLE_HEADER = '# Bazaar revision bundle v'
 
30
BUNDLE_HEADER_RE = re.compile(r'^# Bazaar revision bundle v(?P<version>\d+[\w.]*)\n$')
31
31
CHANGESET_OLD_HEADER_RE = re.compile(r'^# Bazaar-NG changeset v(?P<version>\d+[\w.]*)\n$')
32
32
 
33
33
 
41
41
 
42
42
 
43
43
def read(f):
44
 
    """Read in a changeset from a filelike object.
 
44
    """Read in a bundle from a filelike object.
45
45
 
46
46
    :param f: A file-like object
47
 
    :return: A list of Changeset objects
 
47
    :return: A list of Bundle objects
48
48
    """
49
49
    version = None
50
50
    for line in f:
51
 
        m = CHANGESET_HEADER_RE.match(line)
 
51
        m = BUNDLE_HEADER_RE.match(line)
52
52
        if m:
53
53
            version = m.group('version')
54
54
            break
55
55
        m = CHANGESET_OLD_HEADER_RE.match(line)
56
56
        if m:
57
57
            version = m.group('version')
58
 
            raise errors.ChangesetNotSupported(version, 'old format changesets not supported')
 
58
            raise errors.BundleNotSupported(version, 'old format bundles not supported')
59
59
 
60
60
    if version is None:
61
 
        raise errors.NoChangesetFound(_get_filename(f))
 
61
        raise errors.NoBundleFound(_get_filename(f))
62
62
 
63
 
    # Now we have a version, to figure out how to read the changeset
 
63
    # Now we have a version, to figure out how to read the bundle 
64
64
    if not _serializers.has_key(version):
65
 
        raise errors.ChangesetNotSupported(version, 'version not listed in known versions')
 
65
        raise errors.BundleNotSupported(version, 'version not listed in known versions')
66
66
 
67
67
    serializer = _serializers[version](version)
68
68
 
70
70
 
71
71
 
72
72
def write(source, revision_ids, f, version=None, forced_bases={}):
73
 
    """Serialize a list of changesets to a filelike object.
 
73
    """Serialize a list of bundles to a filelike object.
74
74
 
75
75
    :param source: A source for revision information
76
76
    :param revision_ids: The list of revision ids to serialize
79
79
    """
80
80
 
81
81
    if not _serializers.has_key(version):
82
 
        raise errors.ChangesetNotSupported(version, 'unknown changeset format')
 
82
        raise errors.BundleNotSupported(version, 'unknown bundle format')
83
83
 
84
84
    serializer = _serializers[version](version)
85
85
    return serializer.write(source, revision_ids, forced_bases, f) 
86
86
 
87
87
 
88
 
def write_changeset(repository, revision_id, base_revision_id, out):
 
88
def write_bundle(repository, revision_id, base_revision_id, out):
89
89
    """"""
90
90
    if base_revision_id is NULL_REVISION:
91
91
        base_revision_id = None
194
194
    return (timestamp, offset)
195
195
 
196
196
 
197
 
class ChangesetSerializer(object):
 
197
class BundleSerializer(object):
198
198
    """The base class for Serializers.
199
199
 
200
200
    Common functionality should be included here.
203
203
        self.version = version
204
204
 
205
205
    def read(self, f):
206
 
        """Read the rest of the changesets from the supplied file.
 
206
        """Read the rest of the bundles from the supplied file.
207
207
 
208
208
        :param f: The file to read from
209
 
        :return: A list of changeset trees
 
209
        :return: A list of bundle trees
210
210
        """
211
211
        raise NotImplementedError
212
212
 
213
213
    def write(self, source, revision_ids, forced_bases, f):
214
 
        """Write the changesets to the supplied files.
 
214
        """Write the bundle to the supplied file.
215
215
 
216
216
        :param source: A source for revision information
217
217
        :param revision_ids: The list of revision ids to serialize
222
222
 
223
223
 
224
224
def register(version, klass, overwrite=False):
225
 
    """Register a ChangesetSerializer version.
 
225
    """Register a BundleSerializer version.
226
226
 
227
227
    :param version: The version associated with this format
228
228
    :param klass: The class to instantiate, which must take a version argument
237
237
 
238
238
 
239
239
def register_lazy(version, module, classname, overwrite=False):
240
 
    """Register lazy-loaded changeset serializer.
 
240
    """Register lazy-loaded bundle serializer.
241
241
 
242
242
    :param version: The version associated with this reader
243
243
    :param module: String indicating what module should be loaded
259
259
    base64.encode(temp, to_file)
260
260
    to_file.write('\n')
261
261
 
262
 
register_lazy('0.7', 'bzrlib.changeset.serializer.v07', 'ChangesetSerializerV07')
263
 
register_lazy(None, 'bzrlib.changeset.serializer.v07', 'ChangesetSerializerV07')
 
262
register_lazy('0.7', 'bzrlib.bundle.serializer.v07', 'BundleSerializerV07')
 
263
register_lazy(None, 'bzrlib.bundle.serializer.v07', 'BundleSerializerV07')
264
264