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