Rev 4953: (andrew) Fix ObjectNotLocked error in 'bzr cat -rbranch:... FILE'. in file:///home/pqm/archives/thelove/bzr/%2Btrunk/

Canonical.com Patch Queue Manager pqm at pqm.ubuntu.com
Tue Jan 12 09:05:14 GMT 2010


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

------------------------------------------------------------
revno: 4953 [merge]
revision-id: pqm at pqm.ubuntu.com-20100112090511-hcet612qmzmxnqey
parent: pqm at pqm.ubuntu.com-20100112083358-3q0c7ngiwtja7qba
parent: andrew.bennetts at canonical.com-20100112070254-b4ilcyls7j9fo2k5
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Tue 2010-01-12 09:05:11 +0000
message:
  (andrew) Fix ObjectNotLocked error in 'bzr cat -rbranch:... FILE'.
  	(#506274)
modified:
  NEWS                           NEWS-20050323055033-4e00b5db738777ff
  bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
  bzrlib/tests/blackbox/test_cat.py test_cat.py-20051201162916-f0937e4e19ea24b3
=== modified file 'NEWS'
--- a/NEWS	2010-01-12 08:33:58 +0000
+++ b/NEWS	2010-01-12 09:05:11 +0000
@@ -71,6 +71,9 @@
   that caused some tests to fail when run in a non-default order.
   Probably no user impact.  (Martin Pool, #504102)
 
+* Fixed ``ObjectNotLocked`` error in ``bzr cat -rbranch:../foo FILE``.
+  (Andrew Bennetts, #506274)
+
 * FTP transports support Unicode paths by encoding/decoding them as utf8.
   (Vincent Ladeuil, #472161)
 

=== modified file 'bzrlib/builtins.py'
--- a/bzrlib/builtins.py	2010-01-12 08:33:58 +0000
+++ b/bzrlib/builtins.py	2010-01-12 09:05:11 +0000
@@ -2820,6 +2820,8 @@
         if tree is None:
             tree = b.basis_tree()
         rev_tree = _get_one_revision_tree('cat', revision, branch=b)
+        rev_tree.lock_read()
+        self.add_cleanup(rev_tree.unlock)
 
         old_file_id = rev_tree.path2id(relpath)
 
@@ -2860,8 +2862,10 @@
             chunks = content.splitlines(True)
             content = filtered_output_bytes(chunks, filters,
                 ContentFilterContext(relpath, rev_tree))
+            self.cleanup_now()
             self.outf.writelines(content)
         else:
+            self.cleanup_now()
             self.outf.write(content)
 
 

=== modified file 'bzrlib/tests/blackbox/test_cat.py'
--- a/bzrlib/tests/blackbox/test_cat.py	2009-09-18 09:09:36 +0000
+++ b/bzrlib/tests/blackbox/test_cat.py	2010-01-12 07:02:54 +0000
@@ -20,7 +20,6 @@
 """
 
 import os
-import sys
 
 from bzrlib import tests
 
@@ -128,6 +127,18 @@
         out, err = self.run_bzr_subprocess(['cat', url])
         self.assertEqual('contents of README\n', out)
 
+    def test_cat_branch_revspec(self):
+        wt = self.make_branch_and_tree('a')
+        self.build_tree(['a/README'])
+        wt.add('README')
+        wt.commit('Making sure there is a basis_tree available')
+        wt = self.make_branch_and_tree('b')
+        os.chdir('b')
+
+        out, err = self.run_bzr_subprocess(
+            ['cat', '-r', 'branch:../a', 'README'])
+        self.assertEqual('contents of a/README\n', out)
+
     def test_cat_filters(self):
         wt = self.make_branch_and_tree('.')
         self.build_tree(['README'])




More information about the bazaar-commits mailing list