Rev 5042: (Jelmer) Remove Repository.get_revision_xml(). in file:///home/pqm/archives/thelove/bzr/%2Btrunk/

Canonical.com Patch Queue Manager pqm at pqm.ubuntu.com
Wed Feb 17 15:20:42 GMT 2010


At file:///home/pqm/archives/thelove/bzr/%2Btrunk/

------------------------------------------------------------
revno: 5042 [merge]
revision-id: pqm at pqm.ubuntu.com-20100217152039-2isgqaajrhd8deul
parent: pqm at pqm.ubuntu.com-20100217144053-wdi9l2l0uc88jw3m
parent: jelmer at samba.org-20100215202334-fbhg2hk7yj9e3281
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Wed 2010-02-17 15:20:39 +0000
message:
  (Jelmer) Remove Repository.get_revision_xml().
modified:
  NEWS                           NEWS-20050323055033-4e00b5db738777ff
  bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
  bzrlib/foreign.py              foreign.py-20081112170002-olsxmandkk8qyfuq-1
  bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
  bzrlib/tests/blackbox/test_cat_revision.py test_cat_revision.py-20070410204634-fq8mnld5l5aza9e2-1
=== modified file 'NEWS'
--- a/NEWS	2010-02-17 05:12:01 +0000
+++ b/NEWS	2010-02-17 15:20:39 +0000
@@ -20,6 +20,8 @@
 
 * ``Repository.get_inventory_sha1()`` has been removed. (Jelmer Vernooij)
 
+* ``Repository.get_revision_xml()`` has been removed. (Jelmer Vernooij)
+
 * All test servers have been moved out of the bzrlib.transport hierarchy to
   bzrlib.tests.test_server *except* for MemoryServer, ChrootServer and
   PathFilteringServer. ``bzrlib`` users may encounter test failures that can

=== modified file 'bzrlib/builtins.py'
--- a/bzrlib/builtins.py	2010-02-12 04:33:05 +0000
+++ b/bzrlib/builtins.py	2010-02-15 20:23:34 +0000
@@ -340,6 +340,14 @@
     # cat-revision is more for frontends so should be exact
     encoding = 'strict'
 
+    def print_revision(self, revisions, revid):
+        stream = revisions.get_record_stream([(revid,)], 'unordered', True)
+        record = stream.next()
+        if record.storage_kind == 'absent':
+            raise errors.NoSuchRevision(revisions, revid)
+        revtext = record.get_bytes_as('fulltext')
+        self.outf.write(revtext.decode('utf-8'))
+
     @display_command
     def run(self, revision_id=None, revision=None):
         if revision_id is not None and revision is not None:
@@ -350,23 +358,32 @@
                                          ' --revision or a revision_id')
         b = WorkingTree.open_containing(u'.')[0].branch
 
-        # TODO: jam 20060112 should cat-revision always output utf-8?
-        if revision_id is not None:
-            revision_id = osutils.safe_revision_id(revision_id, warn=False)
-            try:
-                self.outf.write(b.repository.get_revision_xml(revision_id).decode('utf-8'))
-            except errors.NoSuchRevision:
-                msg = "The repository %s contains no revision %s." % (b.repository.base,
-                    revision_id)
-                raise errors.BzrCommandError(msg)
-        elif revision is not None:
-            for rev in revision:
-                if rev is None:
-                    raise errors.BzrCommandError('You cannot specify a NULL'
-                                                 ' revision.')
-                rev_id = rev.as_revision_id(b)
-                self.outf.write(b.repository.get_revision_xml(rev_id).decode('utf-8'))
+        revisions = b.repository.revisions
+        if revisions is None:
+            raise errors.BzrCommandError('Repository %r does not support '
+                'access to raw revision texts')
 
+        b.repository.lock_read()
+        try:
+            # TODO: jam 20060112 should cat-revision always output utf-8?
+            if revision_id is not None:
+                revision_id = osutils.safe_revision_id(revision_id, warn=False)
+                try:
+                    self.print_revision(revisions, revision_id)
+                except errors.NoSuchRevision:
+                    msg = "The repository %s contains no revision %s." % (
+                        b.repository.base, revision_id)
+                    raise errors.BzrCommandError(msg)
+            elif revision is not None:
+                for rev in revision:
+                    if rev is None:
+                        raise errors.BzrCommandError(
+                            'You cannot specify a NULL revision.')
+                    rev_id = rev.as_revision_id(b)
+                    self.print_revision(revisions, rev_id)
+        finally:
+            b.repository.unlock()
+        
 
 class cmd_dump_btree(Command):
     """Dump the contents of a btree index file to stdout.

=== modified file 'bzrlib/foreign.py'
--- a/bzrlib/foreign.py	2010-02-04 16:06:36 +0000
+++ b/bzrlib/foreign.py	2010-02-15 20:23:34 +0000
@@ -229,15 +229,6 @@
         """See Repository._get_inventory_xml()."""
         return self._serialise_inventory(self.get_inventory(revision_id))
 
-    def get_revision_xml(self, revision_id):
-        """Return the XML representation of a revision.
-
-        :param revision_id: Revision for which to return the XML.
-        :return: XML string
-        """
-        return self._serializer.write_revision_to_string(
-            self.get_revision(revision_id))
-
 
 class ForeignBranch(Branch):
     """Branch that exists in a foreign version control system."""

=== modified file 'bzrlib/repository.py'
--- a/bzrlib/repository.py	2010-02-16 00:53:04 +0000
+++ b/bzrlib/repository.py	2010-02-17 15:20:39 +0000
@@ -1895,23 +1895,6 @@
                 rev = self._serializer.read_revision_from_string(text)
                 yield (revid, rev)
 
-    @needs_read_lock
-    def get_revision_xml(self, revision_id):
-        # TODO: jam 20070210 This shouldn't be necessary since get_revision
-        #       would have already do it.
-        # TODO: jam 20070210 Just use _serializer.write_revision_to_string()
-        # TODO: this can't just be replaced by:
-        # return self._serializer.write_revision_to_string(
-        #     self.get_revision(revision_id))
-        # as cStringIO preservers the encoding unlike write_revision_to_string
-        # or some other call down the path.
-        rev = self.get_revision(revision_id)
-        rev_tmp = cStringIO.StringIO()
-        # the current serializer..
-        self._serializer.write_revision(rev, rev_tmp)
-        rev_tmp.seek(0)
-        return rev_tmp.getvalue()
-
     def get_deltas_for_revisions(self, revisions, specific_fileids=None):
         """Produce a generator of revision deltas.
 

=== modified file 'bzrlib/tests/blackbox/test_cat_revision.py'
--- a/bzrlib/tests/blackbox/test_cat_revision.py	2009-03-23 14:59:43 +0000
+++ b/bzrlib/tests/blackbox/test_cat_revision.py	2010-02-15 20:23:34 +0000
@@ -36,11 +36,16 @@
         wt.commit('Commit two', rev_id='a at r-0-2')
         wt.commit('Commit three', rev_id='a at r-0-3')
 
-        revs = {
-            1:r.get_revision_xml('a at r-0-1'),
-            2:r.get_revision_xml('a at r-0-2'),
-            3:r.get_revision_xml('a at r-0-3'),
-        }
+        r.lock_read()
+        try:
+            revs = {}
+            for i in (1, 2, 3):
+                revid = "a at r-0-%d" % i
+                stream = r.revisions.get_record_stream([(revid,)], 'unordered', 
+                                                       False) 
+                revs[i] = stream.next().get_bytes_as('fulltext')
+        finally:
+            r.unlock()
 
         self.check_output(revs[1], 'cat-revision a at r-0-1')
         self.check_output(revs[2], 'cat-revision a at r-0-2')




More information about the bazaar-commits mailing list