Rev 6213: (jelmer) Create a checkout if the target control directory does not support in file:///srv/pqm.bazaar-vcs.org/archives/thelove/bzr/%2Btrunk/

Patch Queue Manager pqm at pqm.ubuntu.com
Thu Oct 13 17:58:28 UTC 2011


At file:///srv/pqm.bazaar-vcs.org/archives/thelove/bzr/%2Btrunk/

------------------------------------------------------------
revno: 6213 [merge]
revision-id: pqm at pqm.ubuntu.com-20111013175827-ot10i1y9uxznffum
parent: pqm at pqm.ubuntu.com-20111013140911-c2zv6a9pux62xnr9
parent: jelmer at samba.org-20111013173305-szor6s2wp7k6ve6i
committer: Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Thu 2011-10-13 17:58:27 +0000
message:
  (jelmer) Create a checkout if the target control directory does not support
   working trees. (Jelmer Vernooij)
modified:
  bzrlib/bzrdir.py               bzrdir.py-20060131065624-156dfea39c4387cb
  bzrlib/tests/__init__.py       selftest.py-20050531073622-8d0e3c8845c97a64
  bzrlib/tests/per_branch/test_branch.py testbranch.py-20050711070244-121d632bc37d7253
  bzrlib/tests/per_branch/test_stacking.py test_stacking.py-20080214020755-msjlkb7urobwly0f-1
  bzrlib/tests/per_bzrdir/test_bzrdir.py test_bzrdir.py-20100829143338-2uachgod1c3liktl-1
  bzrlib/tests/per_controldir/test_controldir.py test_bzrdir.py-20060131065642-0ebeca5e30e30866
  bzrlib/tests/per_repository_reference/__init__.py __init__.py-20080220025549-nnm2s80it1lvcwnc-2
  bzrlib/tests/per_repository_reference/test_add_inventory.py test_add_inventory.p-20080220025549-nnm2s80it1lvcwnc-3
  bzrlib/tests/per_repository_reference/test_add_revision.py test_add_revision.py-20080220034108-ao1u8qgakqbo5a08-1
  bzrlib/tests/per_repository_reference/test_add_signature_text.py test_add_signature_t-20080220041905-1j2g4lyz3c6h34v4-1
  bzrlib/tests/per_repository_reference/test_all_revision_ids.py test_all_revision_id-20080220041905-1j2g4lyz3c6h34v4-2
  bzrlib/tests/per_repository_reference/test_break_lock.py test_break_lock.py-20080220042825-1f48qmpnuqqp5wg2-1
  bzrlib/tests/per_repository_reference/test_check.py test_check.py-20080220044229-sxxe747gzi6q8fyv-1
  bzrlib/tests/per_repository_reference/test_get_record_stream.py test_get_record_stre-20090715175116-rot0ksup7ifmtki0-1
  bzrlib/tests/per_repository_reference/test_get_rev_id_for_revno.py test_get_rev_id_for_-20090615064050-b6mq6co557towrxh-1
  bzrlib/tests/per_repository_reference/test_graph.py test_graph.py-20110208074011-b92ci87urjayd2q7-1
  bzrlib/tests/per_repository_vf/test_reconcile.py test_reconcile.py-20110419123356-dlxq38sqo4w8agvl-1
=== modified file 'bzrlib/bzrdir.py'
--- a/bzrlib/bzrdir.py	2011-10-13 13:44:09 +0000
+++ b/bzrlib/bzrdir.py	2011-10-13 17:33:05 +0000
@@ -222,7 +222,7 @@
             # the tree and fail.
             result.root_transport.local_abspath('.')
             if result_repo is None or result_repo.make_working_trees():
-                self.open_workingtree().clone(result)
+                self.open_workingtree().clone(result, revision_id=revision_id)
         except (errors.NoWorkingTree, errors.NotLocalUrl):
             pass
         return result

=== modified file 'bzrlib/tests/__init__.py'
--- a/bzrlib/tests/__init__.py	2011-10-12 20:32:01 +0000
+++ b/bzrlib/tests/__init__.py	2011-10-13 14:14:10 +0000
@@ -2962,6 +2962,9 @@
         # so check for that by checking bzrdir.BzrDirFormat.get_default_format()
         # RBC 20060208
         format = self.resolve_format(format=format)
+        if not format.supports_workingtrees:
+            b = self.make_branch(relpath+'.branch', format=format)
+            return b.create_checkout(relpath, lightweight=True)
         b = self.make_branch(relpath, format=format)
         try:
             return b.bzrdir.create_workingtree()

=== modified file 'bzrlib/tests/per_branch/test_branch.py'
--- a/bzrlib/tests/per_branch/test_branch.py	2011-10-13 13:44:09 +0000
+++ b/bzrlib/tests/per_branch/test_branch.py	2011-10-13 17:08:19 +0000
@@ -24,6 +24,7 @@
     errors,
     gpg,
     merge,
+    osutils,
     urlutils,
     transport,
     remote,
@@ -434,7 +435,8 @@
         tree_a = self.make_branch_and_tree('a')
         rev_id = tree_a.commit('put some content in the branch')
         # open the branch via a readonly transport
-        source_branch = _mod_branch.Branch.open(self.get_readonly_url('a'))
+        source_branch = _mod_branch.Branch.open(self.get_readonly_url(
+            urlutils.basename(tree_a.branch.base)))
         # sanity check that the test will be valid
         self.assertRaises((errors.LockError, errors.TransportNotPossible),
             source_branch.lock_write)
@@ -446,7 +448,8 @@
         tree_a = self.make_branch_and_tree('a')
         rev_id = tree_a.commit('put some content in the branch')
         # open the branch via a readonly transport
-        url = self.get_readonly_url('a')
+        url = self.get_readonly_url(
+            osutils.basename(tree_a.branch.base.rstrip('/')))
         t = transport.get_transport_from_url(url)
         if not tree_a.branch.bzrdir._format.supports_transport(t):
             raise tests.TestNotApplicable("format does not support transport")
@@ -868,8 +871,9 @@
             tree.add_reference(subtree)
         except errors.UnsupportedOperation:
             raise tests.TestNotApplicable('Tree cannot hold references.')
-        reference_parent = tree.branch.reference_parent('subtree-id',
-                                                        'subtree')
+        reference_parent = tree.branch.reference_parent(
+            'subtree-id',
+            urlutils.relative_url(tree.branch.user_url, subtree.branch.user_url))
         self.assertEqual(subtree.branch.base, reference_parent.base)
 
     def test_reference_parent_accepts_possible_transports(self):
@@ -881,7 +885,9 @@
         except errors.UnsupportedOperation:
             raise tests.TestNotApplicable('Tree cannot hold references.')
         reference_parent = tree.branch.reference_parent('subtree-id',
-            'subtree', possible_transports=[subtree.bzrdir.root_transport])
+            urlutils.relative_url(
+                tree.branch.user_url, subtree.branch.user_url),
+            possible_transports=[subtree.bzrdir.root_transport])
 
     def test_get_reference_info(self):
         branch = self.make_branch('branch')

=== modified file 'bzrlib/tests/per_branch/test_stacking.py'
--- a/bzrlib/tests/per_branch/test_stacking.py	2011-09-18 14:42:26 +0000
+++ b/bzrlib/tests/per_branch/test_stacking.py	2011-10-08 11:10:18 +0000
@@ -150,7 +150,8 @@
         self.assertRevisionNotInRepository('newbranch', trunk_revid)
         tree = new_dir.open_branch().create_checkout('local')
         new_branch_revid = tree.commit('something local')
-        self.assertRevisionNotInRepository('mainline', new_branch_revid)
+        self.assertRevisionNotInRepository(
+            trunk_tree.branch.base, new_branch_revid)
         self.assertRevisionInRepository('newbranch', new_branch_revid)
 
     def test_sprout_stacked_from_smart_server(self):
@@ -171,7 +172,8 @@
         self.assertRevisionNotInRepository('newbranch', trunk_revid)
         tree = new_dir.open_branch().create_checkout('local')
         new_branch_revid = tree.commit('something local')
-        self.assertRevisionNotInRepository('mainline', new_branch_revid)
+        self.assertRevisionNotInRepository(trunk_tree.branch.user_url,
+            new_branch_revid)
         self.assertRevisionInRepository('newbranch', new_branch_revid)
 
     def test_unstack_fetches(self):
@@ -570,7 +572,7 @@
         stacked.set_last_revision_info(1, 'rev-base')
         stacked_relative = self.make_branch('stacked_relative',
                                             format=self.bzrdir_format)
-        stacked_relative.set_stacked_on_url('../base')
+        stacked_relative.set_stacked_on_url(base_tree.branch.user_url)
         stacked.set_last_revision_info(1, 'rev-base')
         self.start_logging_connections()
 

=== modified file 'bzrlib/tests/per_bzrdir/test_bzrdir.py'
--- a/bzrlib/tests/per_bzrdir/test_bzrdir.py	2011-10-04 15:04:29 +0000
+++ b/bzrlib/tests/per_bzrdir/test_bzrdir.py	2011-10-06 23:14:32 +0000
@@ -331,7 +331,7 @@
                                      './.bzr/repository',
                                      ])
         self.assertRepositoryHasSameItems(tree.branch.repository,
-            target.open_repository())
+            target.open_branch().repository)
         target.open_workingtree().revert()
 
     def test_revert_inventory(self):
@@ -351,7 +351,7 @@
                                      './.bzr/repository',
                                      ])
         self.assertRepositoryHasSameItems(tree.branch.repository,
-            target.open_repository())
+            target.open_branch().repository)
 
         target.open_workingtree().revert()
         self.assertDirectoriesEqual(dir.root_transport, target.root_transport,
@@ -363,7 +363,7 @@
                                      './.bzr/repository',
                                      ])
         self.assertRepositoryHasSameItems(tree.branch.repository,
-            target.open_repository())
+            target.open_branch().repository)
 
     def test_clone_bzrdir_tree_branch_reference(self):
         # a tree with a branch reference (aka a checkout)
@@ -503,8 +503,7 @@
         self.assertNotEqual(dir.transport.base, target.transport.base)
         self.assertDirectoriesEqual(dir.root_transport, target.root_transport,
                                     [
-                                     './.bzr/branch/branch.conf',
-                                     './.bzr/branch/parent',
+                                     './.bzr/branch',
                                      './.bzr/checkout/dirstate',
                                      './.bzr/checkout/stat-cache',
                                      './.bzr/checkout/inventory',

=== modified file 'bzrlib/tests/per_controldir/test_controldir.py'
--- a/bzrlib/tests/per_controldir/test_controldir.py	2011-10-04 15:04:29 +0000
+++ b/bzrlib/tests/per_controldir/test_controldir.py	2011-10-08 12:45:23 +0000
@@ -393,9 +393,12 @@
             repo.set_make_working_trees(False)
             self.assertFalse(repo.make_working_trees())
 
-        dir = tree.bzrdir
-        a_dir = dir.clone(self.get_url('repo/a'))
-        a_dir.open_branch()
+        a_dir = tree.bzrdir.clone(self.get_url('repo/a'))
+        a_branch = a_dir.open_branch()
+        # If the new control dir actually uses the repository, it should
+        # not have a working tree.
+        if not a_branch.repository.has_same_location(repo):
+            raise TestNotApplicable('new control dir does not use repository')
         self.assertRaises(errors.NoWorkingTree, a_dir.open_workingtree)
 
     def test_clone_respects_stacked(self):

=== modified file 'bzrlib/tests/per_repository_reference/__init__.py'
--- a/bzrlib/tests/per_repository_reference/__init__.py	2011-08-30 10:54:28 +0000
+++ b/bzrlib/tests/per_repository_reference/__init__.py	2011-10-01 11:54:46 +0000
@@ -25,6 +25,7 @@
 from bzrlib import (
     errors,
     remote,
+    urlutils,
     )
 from bzrlib.bzrdir import BzrDir
 from bzrlib.tests import multiply_tests
@@ -36,17 +37,18 @@
 
 class TestCaseWithExternalReferenceRepository(TestCaseWithRepository):
 
-    def make_referring(self, relpath, target_path):
+    def make_referring(self, relpath, a_repository):
         """Get a new repository that refers to a_repository.
 
         :param relpath: The path to create the repository at.
         :param a_repository: A repository to refer to.
         """
         repo = self.make_repository(relpath)
-        repo.add_fallback_repository(self.readonly_repository(target_path))
+        repo.add_fallback_repository(self.readonly_repository(a_repository))
         return repo
 
-    def readonly_repository(self, relpath):
+    def readonly_repository(self, repo):
+        relpath = urlutils.basename(repo.bzrdir.user_url.rstrip('/'))
         return BzrDir.open_from_transport(
             self.get_readonly_transport(relpath)).open_repository()
 
@@ -58,8 +60,8 @@
         # because developers use this api to setup the tree, branch and
         # repository for their tests: having it not give the right repository
         # type would invalidate the tests.
-        self.make_branch_and_tree('repo')
-        repo = self.make_referring('referring', 'repo')
+        tree = self.make_branch_and_tree('repo')
+        repo = self.make_referring('referring', tree.branch.repository)
         self.assertIsInstance(repo._format,
             self.repository_format.__class__)
 

=== modified file 'bzrlib/tests/per_repository_reference/test_add_inventory.py'
--- a/bzrlib/tests/per_repository_reference/test_add_inventory.py	2009-04-09 20:23:07 +0000
+++ b/bzrlib/tests/per_repository_reference/test_add_inventory.py	2011-10-01 11:54:46 +0000
@@ -33,7 +33,7 @@
         tree.lock_read()
         self.addCleanup(tree.unlock)
         base = self.make_repository('base')
-        repo = self.make_referring('referring', 'base')
+        repo = self.make_referring('referring', base)
         repo.lock_write()
         try:
             repo.start_write_group()

=== modified file 'bzrlib/tests/per_repository_reference/test_add_revision.py'
--- a/bzrlib/tests/per_repository_reference/test_add_revision.py	2009-09-08 14:51:23 +0000
+++ b/bzrlib/tests/per_repository_reference/test_add_revision.py	2011-10-01 11:54:46 +0000
@@ -34,7 +34,7 @@
         self.addCleanup(tree.unlock)
         rev = tree.branch.repository.get_revision(revid)
         base = self.make_repository('base')
-        repo = self.make_referring('referring', 'base')
+        repo = self.make_referring('referring', base)
         repo.lock_write()
         try:
             repo.start_write_group()

=== modified file 'bzrlib/tests/per_repository_reference/test_add_signature_text.py'
--- a/bzrlib/tests/per_repository_reference/test_add_signature_text.py	2009-09-08 14:51:23 +0000
+++ b/bzrlib/tests/per_repository_reference/test_add_signature_text.py	2011-10-01 11:54:46 +0000
@@ -33,7 +33,7 @@
         tree.lock_read()
         self.addCleanup(tree.unlock)
         base = self.make_repository('base')
-        repo = self.make_referring('referring', 'base')
+        repo = self.make_referring('referring', base)
         repo.lock_write()
         try:
             repo.start_write_group()

=== modified file 'bzrlib/tests/per_repository_reference/test_all_revision_ids.py'
--- a/bzrlib/tests/per_repository_reference/test_all_revision_ids.py	2009-03-23 14:59:43 +0000
+++ b/bzrlib/tests/per_repository_reference/test_all_revision_ids.py	2011-10-01 11:54:46 +0000
@@ -16,7 +16,6 @@
 
 """Tests for all_revision_ids on a repository with external references."""
 
-from bzrlib import errors
 from bzrlib.tests.per_repository_reference import (
     TestCaseWithExternalReferenceRepository,
     )
@@ -26,20 +25,20 @@
 
     def test_all_revision_ids_empty(self):
         base = self.make_repository('base')
-        repo = self.make_referring('referring', 'base')
+        repo = self.make_referring('referring', base)
         self.assertEqual(set([]), set(repo.all_revision_ids()))
 
     def test_all_revision_ids_from_base(self):
         tree = self.make_branch_and_tree('base')
         revid = tree.commit('one')
-        repo = self.make_referring('referring', 'base')
+        repo = self.make_referring('referring', tree.branch.repository)
         self.assertEqual(set([revid]), set(repo.all_revision_ids()))
 
     def test_all_revision_ids_from_repo(self):
         tree = self.make_branch_and_tree('spare')
         revid = tree.commit('one')
         base = self.make_repository('base')
-        repo = self.make_referring('referring', 'base')
+        repo = self.make_referring('referring', base)
         repo.fetch(tree.branch.repository, revid)
         self.assertEqual(set([revid]), set(repo.all_revision_ids()))
 
@@ -48,7 +47,7 @@
         revid = tree.commit('one')
         base_tree = self.make_branch_and_tree('base')
         revid2 = base_tree.commit('two')
-        repo = self.make_referring('referring', 'base')
+        repo = self.make_referring('referring', base_tree.branch.repository)
         repo.fetch(tree.branch.repository, revid)
         self.assertEqual(set([revid, revid2]), set(repo.all_revision_ids()))
 
@@ -56,7 +55,7 @@
         tree = self.make_branch_and_tree('spare')
         revid = tree.commit('one')
         base = self.make_repository('base')
-        repo = self.make_referring('referring', 'base')
+        repo = self.make_referring('referring', base)
         repo.fetch(tree.branch.repository, revid)
         base.fetch(tree.branch.repository, revid)
         self.assertEqual(set([revid]), set(repo.all_revision_ids()))

=== modified file 'bzrlib/tests/per_repository_reference/test_break_lock.py'
--- a/bzrlib/tests/per_repository_reference/test_break_lock.py	2010-01-25 17:48:22 +0000
+++ b/bzrlib/tests/per_repository_reference/test_break_lock.py	2011-10-01 11:54:46 +0000
@@ -29,7 +29,7 @@
 
     def test_break_lock(self):
         base = self.make_repository('base')
-        repo = self.make_referring('referring', 'base')
+        repo = self.make_referring('referring', base)
         unused_repo = repo.bzrdir.open_repository()
         base.lock_write()
         self.addCleanup(base.unlock)

=== modified file 'bzrlib/tests/per_repository_reference/test_check.py'
--- a/bzrlib/tests/per_repository_reference/test_check.py	2010-02-17 17:11:16 +0000
+++ b/bzrlib/tests/per_repository_reference/test_check.py	2011-10-01 11:54:46 +0000
@@ -17,7 +17,6 @@
 """Tests for check on a repository with external references."""
 
 import bzrlib.ui
-from bzrlib import errors
 from bzrlib.tests.per_repository_reference import (
     TestCaseWithExternalReferenceRepository,
     )
@@ -31,7 +30,7 @@
         tree.add(['file'], ['file-id'])
         rev1_id = tree.commit('one')
         referring = self.make_branch_and_tree('referring')
-        readonly_base = self.readonly_repository('base')
+        readonly_base = self.readonly_repository(tree.branch.repository)
         referring.branch.repository.add_fallback_repository(readonly_base)
         local_tree = referring.branch.create_checkout('local')
         self.build_tree_contents([('local/file', 'change')])

=== modified file 'bzrlib/tests/per_repository_reference/test_get_record_stream.py'
--- a/bzrlib/tests/per_repository_reference/test_get_record_stream.py	2009-07-15 18:22:38 +0000
+++ b/bzrlib/tests/per_repository_reference/test_get_record_stream.py	2011-10-01 11:54:46 +0000
@@ -82,7 +82,7 @@
         self.all_repo.lock_read()
         self.addCleanup(self.all_repo.unlock)
         self.base_repo = self.make_repository('base')
-        self.stacked_repo = self.make_referring('referring', 'base')
+        self.stacked_repo = self.make_referring('referring', self.base_repo)
 
     def make_simple_split(self):
         """Set up the repositories so that everything is in base except F"""

=== modified file 'bzrlib/tests/per_repository_reference/test_get_rev_id_for_revno.py'
--- a/bzrlib/tests/per_repository_reference/test_get_rev_id_for_revno.py	2009-08-20 04:09:58 +0000
+++ b/bzrlib/tests/per_repository_reference/test_get_rev_id_for_revno.py	2011-10-01 11:54:46 +0000
@@ -31,7 +31,8 @@
         spare_tree = tree.bzrdir.sprout('spare').open_workingtree()
         revid3 = spare_tree.commit('three')
         branch = spare_tree.branch.create_clone_on_transport(
-            self.get_transport('referring'), stacked_on=self.get_url('base'))
+            self.get_transport('referring'),
+            stacked_on=tree.branch.base)
         repo = branch.repository
         # Sanity check: now repo has 'revid3', and base has 'revid' + 'revid2'
         self.assertEqual(set([revid3]),

=== modified file 'bzrlib/tests/per_repository_reference/test_graph.py'
--- a/bzrlib/tests/per_repository_reference/test_graph.py	2011-08-26 11:26:29 +0000
+++ b/bzrlib/tests/per_repository_reference/test_graph.py	2011-10-01 11:39:29 +0000
@@ -20,8 +20,8 @@
 
 from bzrlib import (
     remote,
-    repository,
     tests,
+    urlutils,
     )
 from bzrlib.tests.per_repository import TestCaseWithRepository
 
@@ -43,9 +43,11 @@
         wt_a = self.make_branch_and_tree('a')
         branch_a = wt_a.branch
         branch_b = self.make_branch('b')
-        branch_b.set_stacked_on_url('../a')
+        branch_b.set_stacked_on_url(
+            urlutils.relative_url(branch_b.base, branch_a.base))
         branch_c = self.make_branch('c')
-        branch_c.set_stacked_on_url('../b')
+        branch_c.set_stacked_on_url(
+            urlutils.relative_url(branch_c.base, branch_b.base))
         revid_1 = wt_a.commit('first commit')
         return branch_a, branch_b, branch_c, revid_1
 

=== modified file 'bzrlib/tests/per_repository_vf/test_reconcile.py'
--- a/bzrlib/tests/per_repository_vf/test_reconcile.py	2011-06-19 15:23:02 +0000
+++ b/bzrlib/tests/per_repository_vf/test_reconcile.py	2011-10-01 11:36:04 +0000
@@ -349,9 +349,10 @@
         # we should add a lower level api to allow constructing such cases.
 
         # first off the common logic:
-        tree = self.make_branch_and_tree('wrong-first-parent')
-        second_tree = self.make_branch_and_tree('reversed-secondary-parents')
-        for t in [tree, second_tree]:
+        self.first_tree = self.make_branch_and_tree('wrong-first-parent')
+        self.second_tree = self.make_branch_and_tree(
+            'reversed-secondary-parents')
+        for t in [self.first_tree, self.second_tree]:
             t.commit('1', rev_id='1')
             uncommit(t.branch, tree=t)
             t.commit('2', rev_id='2')
@@ -360,10 +361,10 @@
             uncommit(t.branch, tree=t)
         #second_tree = self.make_branch_and_tree('reversed-secondary-parents')
         #second_tree.pull(tree) # XXX won't copy the repo?
-        repo_secondary = second_tree.branch.repository
+        repo_secondary = self.second_tree.branch.repository
 
         # now setup the wrong-first parent case
-        repo = tree.branch.repository
+        repo = self.first_tree.branch.repository
         repo.lock_write()
         repo.start_write_group()
         inv = Inventory(revision_id='wrong-first-parent')
@@ -406,9 +407,7 @@
 
     def test_reconcile_wrong_order(self):
         # a wrong order in primary parents is optionally correctable
-        t = self.get_transport().clone('wrong-first-parent')
-        d = bzrlib.bzrdir.BzrDir.open_from_transport(t)
-        repo = d.open_repository()
+        repo = self.first_tree.branch.repository
         repo.lock_read()
         try:
             g = repo.get_graph()
@@ -417,7 +416,7 @@
                 raise TestSkipped('wrong-first-parent is not setup for testing')
         finally:
             repo.unlock()
-        self.checkUnreconciled(d, repo.reconcile())
+        self.checkUnreconciled(repo.bzrdir, repo.reconcile())
         # nothing should have been altered yet : inventories without
         # revisions are not data loss incurring for current format
         reconciler = repo.reconcile(thorough=True)
@@ -435,8 +434,6 @@
 
     def test_reconcile_wrong_order_secondary_inventory(self):
         # a wrong order in the parents for inventories is ignored.
-        t = self.get_transport().clone('reversed-secondary-parents')
-        d = bzrlib.bzrdir.BzrDir.open_from_transport(t)
-        repo = d.open_repository()
-        self.checkUnreconciled(d, repo.reconcile())
-        self.checkUnreconciled(d, repo.reconcile(thorough=True))
+        repo = self.second_tree.branch.repository
+        self.checkUnreconciled(repo.bzrdir, repo.reconcile())
+        self.checkUnreconciled(repo.bzrdir, repo.reconcile(thorough=True))




More information about the bazaar-commits mailing list