~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
2520.4.15 by Aaron Bentley
Fix _get_bundle invocations
17
from bzrlib.bundle.serializer import _get_bundle_header
1910.2.55 by Aaron Bentley
Bundle 0.9 uses Testament 3 strict
18
from bzrlib.bundle.serializer.v08 import BundleSerializerV08, BundleReader
1910.2.64 by Aaron Bentley
Changes from review
19
from bzrlib.testament import StrictTestament3
1910.2.55 by Aaron Bentley
Bundle 0.9 uses Testament 3 strict
20
from bzrlib.bundle.bundle_data import BundleInfo
1910.2.50 by Aaron Bentley
start work on format 0.9 serializer
21
1910.2.62 by Aaron Bentley
Cleanups
22
1910.2.64 by Aaron Bentley
Changes from review
23
"""Serializer for bundle format 0.9"""
24
25
1910.2.50 by Aaron Bentley
start work on format 0.9 serializer
26
class BundleSerializerV09(BundleSerializerV08):
1910.2.62 by Aaron Bentley
Cleanups
27
    """Serializer for bzr bundle format 0.9
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
28
1910.2.62 by Aaron Bentley
Cleanups
29
    This format supports rich root data, for the nested-trees work, but also
30
    supports repositories that don't have rich root data.  It cannot be
31
    used to transfer from a knit2 repo into a knit1 repo, because that would
32
    be lossy.
33
    """
1910.2.50 by Aaron Bentley
start work on format 0.9 serializer
34
35
    def check_compatible(self):
36
        pass
1910.2.51 by Aaron Bentley
Bundles now corrupt repositories
37
38
    def _write_main_header(self):
39
        """Write the header for the changes"""
40
        f = self.to_file
2520.4.14 by Aaron Bentley
Get most tests passing, use format header
41
        f.write(_get_bundle_header('0.9') + '#\n')
1910.2.51 by Aaron Bentley
Bundles now corrupt repositories
42
1910.2.55 by Aaron Bentley
Bundle 0.9 uses Testament 3 strict
43
    def _testament_sha1(self, revision_id):
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
44
        return StrictTestament3.from_revision(self.source,
1910.2.55 by Aaron Bentley
Bundle 0.9 uses Testament 3 strict
45
                                              revision_id).as_sha1()
46
47
    def read(self, f):
48
        """Read the rest of the bundles from the supplied file.
49
50
        :param f: The file to read from
51
        :return: A list of bundles
52
        """
53
        return BundleReaderV09(f).info
54
55
56
class BundleInfo09(BundleInfo):
1910.2.64 by Aaron Bentley
Changes from review
57
    """BundleInfo that uses StrictTestament3
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
58
1910.2.62 by Aaron Bentley
Cleanups
59
    This means that the root data is included in the testament.
60
    """
1910.2.55 by Aaron Bentley
Bundle 0.9 uses Testament 3 strict
61
62
    def _testament_sha1_from_revision(self, repository, revision_id):
1910.2.64 by Aaron Bentley
Changes from review
63
        testament = StrictTestament3.from_revision(repository, revision_id)
1910.2.55 by Aaron Bentley
Bundle 0.9 uses Testament 3 strict
64
        return testament.as_sha1()
65
66
    def _testament_sha1(self, revision, inventory):
1910.2.64 by Aaron Bentley
Changes from review
67
        return StrictTestament3(revision, inventory).as_sha1()
1910.2.55 by Aaron Bentley
Bundle 0.9 uses Testament 3 strict
68
1910.2.56 by Aaron Bentley
More work on bundles
69
1910.2.55 by Aaron Bentley
Bundle 0.9 uses Testament 3 strict
70
class BundleReaderV09(BundleReader):
1910.2.62 by Aaron Bentley
Cleanups
71
    """BundleReader for 0.9 bundles"""
3943.8.1 by Marius Kruger
remove all trailing whitespace from bzr source
72
1910.2.55 by Aaron Bentley
Bundle 0.9 uses Testament 3 strict
73
    def _get_info(self):
74
        return BundleInfo09()