~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to contrib/newinventory.py

  • Committer: John Arbash Meinel
  • Date: 2007-03-15 22:35:35 UTC
  • mto: This revision was merged to the branch mainline in revision 2363.
  • Revision ID: john@arbash-meinel.com-20070315223535-d3d4964oe1hc8zhg
Add an overzealous test, for Unicode support of _iter_changes.
For both knowns and unknowns.
And include a basic, if suboptimal, fix.
I would rather defer the decoding until we've determined that we are going to return the tuple.
There is still something broken with added files, but I'll get to that.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
# (C) 2005 Canonical Ltd
2
 
 
 
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
5
5
# the Free Software Foundation; either version 2 of the License, or
6
6
# (at your option) any later version.
7
 
 
 
7
#
8
8
# This program is distributed in the hope that it will be useful,
9
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
11
# GNU General Public License for more details.
12
 
 
 
12
#
13
13
# You should have received a copy of the GNU General Public License
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
 
from cElementTree import Element, ElementTree, SubElement
 
17
from bzrlib.xml import ElementTree, Element
18
18
 
19
19
 
20
20
def write_inventory(inv, f):
21
21
    el = Element('inventory', {'version': '2'})
22
22
    el.text = '\n'
23
 
    
 
23
 
24
24
    root = Element('root_directory', {'id': inv.root.file_id})
25
25
    root.tail = root.text = '\n'
26
26
    el.append(root)
35
35
                el.set('text_id', ie.text_id)
36
36
            if ie.text_sha1:
37
37
                el.set('text_sha1', ie.text_sha1)
38
 
            if ie.text_size != None:
 
38
            if ie.text_size is not None:
39
39
                el.set('text_size', ('%d' % ie.text_size))
40
40
        elif kind != 'directory':
41
 
            bailout('unknown InventoryEntry kind %r' % kind)
 
41
            raise BzrError('unknown InventoryEntry kind %r' % kind)
42
42
 
43
43
        el.tail = '\n'
44
44
        parent_el.append(el)
84
84
                f.write('text_id="%s" ' % ie.text_id)
85
85
            if ie.text_sha1:
86
86
                f.write('text_sha1="%s" ' % ie.text_sha1)
87
 
            if ie.text_size != None:
 
87
            if ie.text_size is not None:
88
88
                f.write('text_size="%d" ' % ie.text_size)
89
89
            f.write('/>\n')
90
90
        elif kind == 'directory':
97
97
 
98
98
            f.write('</directory>\n')
99
99
        else:
100
 
            bailout('unknown InventoryEntry kind %r' % kind)
 
100
            raise BzrError('unknown InventoryEntry kind %r' % kind)
101
101
 
102
102
    f.write('<inventory>\n')
103
103
    f.write('<root_directory id="%s">\n' % escape_attr(inv.root.file_id))
132
132
            ie.text_size = v and int(v)
133
133
            ie.text_sha1 = el.get('text_sha1')
134
134
        else:
135
 
            bailout("unknown inventory entry %r" % kind)
 
135
            raise BzrError("unknown inventory entry %r" % kind)
136
136
 
137
137
    inv_el = ElementTree().parse(f)
138
138
    assert inv_el.tag == 'inventory'
139
139
    root_el = inv_el[0]
140
140
    assert root_el.tag == 'root_directory'
141
141
 
142
 
    inv = Inventory()
 
142
    inv = Inventory(inv_el.get('file_id'))
143
143
    for el in root_el:
144
144
        descend(inv.root, el)