Rev 4607: Support get_inventory_xml on CHKRepository. in http://bazaar.launchpad.net/~lifeless/bzr/CHKRepo._iter_inventory_xmls
Robert Collins
robertc at robertcollins.net
Fri Aug 14 03:35:09 BST 2009
At http://bazaar.launchpad.net/~lifeless/bzr/CHKRepo._iter_inventory_xmls
------------------------------------------------------------
revno: 4607
revision-id: robertc at robertcollins.net-20090814023501-38rzzbe0ckolv7m8
parent: pqm at pqm.ubuntu.com-20090814002017-l0qxa8jj76sige97
committer: Robert Collins <robertc at robertcollins.net>
branch nick: CHKRepo._iter_inventory_xmls
timestamp: Fri 2009-08-14 12:35:01 +1000
message:
Support get_inventory_xml on CHKRepository.
=== modified file 'bzrlib/repofmt/groupcompress_repo.py'
--- a/bzrlib/repofmt/groupcompress_repo.py 2009-08-12 18:58:05 +0000
+++ b/bzrlib/repofmt/groupcompress_repo.py 2009-08-14 02:35:01 +0000
@@ -795,9 +795,15 @@
yield inventory.CHKInventory.deserialise(self.chk_bytes, texts[key], key)
def _iter_inventory_xmls(self, revision_ids):
- # Without a native 'xml' inventory, this method doesn't make sense, so
- # make it raise to trap naughty direct users.
- raise NotImplementedError(self._iter_inventory_xmls)
+ # Without a native 'xml' inventory, this method doesn't make sense.
+ # However older working trees, and older bundles want it - so we supply
+ # it allowing get_inventory_xml to work. Bundles currently use the
+ # serializer directly; this also isn't ideal, but there isn't an xml
+ # iteration interface offered at all for repositories. We could make
+ # _iter_inventory_xmls be part of the contract, even if kept private.
+ inv_to_str = self._serializer.write_inventory_to_string
+ for inv in self.iter_inventories(revision_ids):
+ yield inv_to_str(inv), inv.revision_id
def _find_present_inventory_keys(self, revision_keys):
parent_map = self.inventories.get_parent_map(revision_keys)
=== modified file 'bzrlib/workingtree.py'
--- a/bzrlib/workingtree.py 2009-08-04 04:36:34 +0000
+++ b/bzrlib/workingtree.py 2009-08-14 02:35:01 +0000
@@ -1893,8 +1893,8 @@
firstline = xml.split('\n', 1)[0]
if (not 'revision_id="' in firstline or
'format="7"' not in firstline):
- inv = self.branch.repository.deserialise_inventory(
- new_revision, xml)
+ inv = self.branch.repository._serializer.read_inventory_from_string(
+ xml, new_revision)
xml = self._create_basis_xml_from_inventory(new_revision, inv)
self._write_basis_inventory(xml)
except (errors.NoSuchRevision, errors.RevisionNotPresent):
More information about the bazaar-commits
mailing list