/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
2255.7.83 by John Arbash Meinel
Update some obvious copyright headers to include 2007.
1
# Copyright (C) 2005, 2006, 2007 Canonical Ltd
2052.3.1 by John Arbash Meinel
Add tests to cleanup the copyright of all source files
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
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
1910.2.22 by Aaron Bentley
Make commits preserve root entry data
17
from bzrlib import cache_utf8, inventory, errors, xml5
18
19
3311.3.1 by Aaron Bentley
Make serializer 6 inherit from serializer 8
20
class Serializer_v8(xml5.Serializer_v5):
21
    """This serialiser adds rich roots.
22
23
    Its revision format number matches its inventory number.
24
    """
25
26
    format_num = '8'
2817.2.1 by Robert Collins
* Inventory serialisation no longer double-sha's the content.
27
    root_id = None
2100.3.2 by Aaron Bentley
Add tests for format 7, enforce number
28
1910.2.22 by Aaron Bentley
Make commits preserve root entry data
29
    def _append_inventory_root(self, append, inv):
30
        """Append the inventory root to output."""
1910.2.23 by Aaron Bentley
Fix up test cases that manually construct inventories
31
        if inv.revision_id is not None:
2817.2.1 by Robert Collins
* Inventory serialisation no longer double-sha's the content.
32
            revid1 = ' revision_id="'
33
            revid2 = xml5._encode_and_escape(inv.revision_id)
34
        else:
35
            revid1 = ""
36
            revid2 = ""
37
        append('<inventory format="%s"%s%s>\n' % (
38
            self.format_num, revid1, revid2))
39
        append('<directory file_id="%s name="%s revision="%s />\n' % (
40
            xml5._encode_and_escape(inv.root.file_id),
41
            xml5._encode_and_escape(inv.root.name),
42
            xml5._encode_and_escape(inv.root.revision)))
1910.2.22 by Aaron Bentley
Make commits preserve root entry data
43
2889.1.1 by Robert Collins
* The class ``bzrlib.repofmt.knitrepo.KnitRepository3`` has been folded into
44
    def _check_revisions(self, inv):
45
        """Extension point for subclasses to check during serialisation.
46
47
        By default no checking is done.
48
49
        :param inv: An inventory about to be serialised, to be checked.
50
        :raises: AssertionError if an error has occured.
51
        """
52
        assert inv.revision_id is not None
53
        assert inv.root.revision is not None
54
55
    def _unpack_inventory(self, elt, revision_id=None):
1910.2.22 by Aaron Bentley
Make commits preserve root entry data
56
        """Construct from XML Element"""
1910.2.31 by Aaron Bentley
Fix bugs in basis inventory handling, change filename
57
        if elt.tag != 'inventory':
58
            raise errors.UnexpectedInventoryFormat('Root tag is %r' % elt.tag)
1910.2.22 by Aaron Bentley
Make commits preserve root entry data
59
        format = elt.get('format')
2100.3.2 by Aaron Bentley
Add tests for format 7, enforce number
60
        if format != self.format_num:
1910.2.31 by Aaron Bentley
Fix bugs in basis inventory handling, change filename
61
            raise errors.UnexpectedInventoryFormat('Invalid format version %r'
62
                                                   % format)
1910.2.22 by Aaron Bentley
Make commits preserve root entry data
63
        revision_id = elt.get('revision_id')
64
        if revision_id is not None:
2249.5.12 by John Arbash Meinel
Change the APIs for VersionedFile, Store, and some of Repository into utf-8
65
            revision_id = cache_utf8.encode(revision_id)
1910.2.22 by Aaron Bentley
Make commits preserve root entry data
66
        inv = inventory.Inventory(root_id=None, revision_id=revision_id)
67
        for e in elt:
2294.1.9 by John Arbash Meinel
Minor performance improvement, use None as signal rather than ROOT_ID
68
            ie = self._unpack_entry(e)
1910.2.22 by Aaron Bentley
Make commits preserve root entry data
69
            inv.add(ie)
2889.1.1 by Robert Collins
* The class ``bzrlib.repofmt.knitrepo.KnitRepository3`` has been folded into
70
        assert inv.root.revision is not None
1910.2.22 by Aaron Bentley
Make commits preserve root entry data
71
        return inv
72
73
3311.3.1 by Aaron Bentley
Make serializer 6 inherit from serializer 8
74
serializer_v8 = Serializer_v8()