~bzr-pqm/bzr/bzr.dev

2052.3.2 by John Arbash Meinel
Change Copyright .. by Canonical to Copyright ... Canonical
1
# Copyright (C) 2006 Canonical Ltd
1910.2.64 by Aaron Bentley
Changes from review
2
#
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
7
#
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
12
#
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
4183.7.1 by Sabin Iacob
update FSF mailing address
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
1910.2.64 by Aaron Bentley
Changes from review
16
6379.6.3 by Jelmer Vernooij
Use absolute_import.
17
from __future__ import absolute_import
18
2520.4.15 by Aaron Bentley
Fix _get_bundle invocations
19
from bzrlib.bundle.serializer import _get_bundle_header
1910.2.55 by Aaron Bentley
Bundle 0.9 uses Testament 3 strict
20
from bzrlib.bundle.serializer.v08 import BundleSerializerV08, BundleReader
1910.2.64 by Aaron Bentley
Changes from review
21
from bzrlib.testament import StrictTestament3
1910.2.55 by Aaron Bentley
Bundle 0.9 uses Testament 3 strict
22
from bzrlib.bundle.bundle_data import BundleInfo
1910.2.50 by Aaron Bentley
start work on format 0.9 serializer
23
1910.2.62 by Aaron Bentley
Cleanups
24
1910.2.64 by Aaron Bentley
Changes from review
25
"""Serializer for bundle format 0.9"""
26
27
1910.2.50 by Aaron Bentley
start work on format 0.9 serializer
28
class BundleSerializerV09(BundleSerializerV08):
1910.2.62 by Aaron Bentley
Cleanups
29
    """Serializer for bzr bundle format 0.9
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
30
1910.2.62 by Aaron Bentley
Cleanups
31
    This format supports rich root data, for the nested-trees work, but also
32
    supports repositories that don't have rich root data.  It cannot be
33
    used to transfer from a knit2 repo into a knit1 repo, because that would
34
    be lossy.
35
    """
1910.2.50 by Aaron Bentley
start work on format 0.9 serializer
36
37
    def check_compatible(self):
38
        pass
1910.2.51 by Aaron Bentley
Bundles now corrupt repositories
39
40
    def _write_main_header(self):
41
        """Write the header for the changes"""
42
        f = self.to_file
2520.4.14 by Aaron Bentley
Get most tests passing, use format header
43
        f.write(_get_bundle_header('0.9') + '#\n')
1910.2.51 by Aaron Bentley
Bundles now corrupt repositories
44
1910.2.55 by Aaron Bentley
Bundle 0.9 uses Testament 3 strict
45
    def _testament_sha1(self, revision_id):
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
46
        return StrictTestament3.from_revision(self.source,
1910.2.55 by Aaron Bentley
Bundle 0.9 uses Testament 3 strict
47
                                              revision_id).as_sha1()
48
49
    def read(self, f):
50
        """Read the rest of the bundles from the supplied file.
51
52
        :param f: The file to read from
53
        :return: A list of bundles
54
        """
55
        return BundleReaderV09(f).info
56
57
58
class BundleInfo09(BundleInfo):
1910.2.64 by Aaron Bentley
Changes from review
59
    """BundleInfo that uses StrictTestament3
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
60
1910.2.62 by Aaron Bentley
Cleanups
61
    This means that the root data is included in the testament.
62
    """
1910.2.55 by Aaron Bentley
Bundle 0.9 uses Testament 3 strict
63
64
    def _testament_sha1_from_revision(self, repository, revision_id):
1910.2.64 by Aaron Bentley
Changes from review
65
        testament = StrictTestament3.from_revision(repository, revision_id)
1910.2.55 by Aaron Bentley
Bundle 0.9 uses Testament 3 strict
66
        return testament.as_sha1()
67
5798.1.2 by Jelmer Vernooij
Fix some tests.
68
    def _testament_sha1(self, revision, tree):
69
        return StrictTestament3(revision, tree).as_sha1()
1910.2.55 by Aaron Bentley
Bundle 0.9 uses Testament 3 strict
70
1910.2.56 by Aaron Bentley
More work on bundles
71
1910.2.55 by Aaron Bentley
Bundle 0.9 uses Testament 3 strict
72
class BundleReaderV09(BundleReader):
1910.2.62 by Aaron Bentley
Cleanups
73
    """BundleReader for 0.9 bundles"""
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
74
1910.2.55 by Aaron Bentley
Bundle 0.9 uses Testament 3 strict
75
    def _get_info(self):
76
        return BundleInfo09()