Rev 3212: * ``RemoteBzrDir._get_tree_branch`` no longer triggers ``_ensure_real``, in http://people.ubuntu.com/~robertc/baz2.0/RemoteBzrDir._get_tree_branch
Robert Collins
robertc at robertcollins.net
Mon Feb 4 03:51:07 GMT 2008
At http://people.ubuntu.com/~robertc/baz2.0/RemoteBzrDir._get_tree_branch
------------------------------------------------------------
revno: 3212
revision-id:robertc at robertcollins.net-20080204035039-gdwcyz8gopti4r0l
parent: pqm at pqm.ubuntu.com-20080201053934-q32y2nk5vvo13c6v
committer: Robert Collins <robertc at robertcollins.net>
branch nick: RemoteBzrDir._get_tree_branch
timestamp: Mon 2008-02-04 14:50:39 +1100
message:
* ``RemoteBzrDir._get_tree_branch`` no longer triggers ``_ensure_real``,
removing one round trip on many network operations. (Robert Collins)
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/bzrdir.py bzrdir.py-20060131065624-156dfea39c4387cb
bzrlib/remote.py remote.py-20060720103555-yeeg2x51vn0rbtdp-1
bzrlib/tests/test_remote.py test_remote.py-20060720103555-yeeg2x51vn0rbtdp-2
=== modified file 'NEWS'
--- a/NEWS 2008-02-01 05:39:34 +0000
+++ b/NEWS 2008-02-04 03:50:39 +0000
@@ -137,6 +137,9 @@
``Repository.get_data_stream_for_search`` which allows less network
traffic when requesting data streams over a smart server. (Robert Collins)
+ * ``RemoteBzrDir._get_tree_branch`` no longer triggers ``_ensure_real``,
+ removing one round trip on many network operations. (Robert Collins)
+
* Repository has a new method ``has_revisions`` which signals the presence
of many revisions by returning a set of the revisions listed which are
present. This can be done by index queries without reading data for parent
=== modified file 'bzrlib/bzrdir.py'
--- a/bzrlib/bzrdir.py 2008-01-17 13:45:16 +0000
+++ b/bzrlib/bzrdir.py 2008-02-04 03:50:39 +0000
@@ -748,7 +748,7 @@
def _get_tree_branch(self):
"""Return the branch and tree, if any, for this bzrdir.
- Return None for tree if not present.
+ Return None for tree if not present or inaccessible.
Raise NotBranchError if no branch is present.
:return: (tree, branch)
"""
=== modified file 'bzrlib/remote.py'
--- a/bzrlib/remote.py 2008-01-29 03:22:52 +0000
+++ b/bzrlib/remote.py 2008-02-04 03:50:39 +0000
@@ -130,6 +130,10 @@
else:
raise errors.UnexpectedSmartServerResponse(response)
+ def _get_tree_branch(self):
+ """See BzrDir._get_tree_branch()."""
+ return None, self.open_branch()
+
def open_branch(self, _unsupported=False):
assert _unsupported == False, 'unsupported flag support not implemented yet.'
reference_url = self.get_branch_reference()
=== modified file 'bzrlib/tests/test_remote.py'
--- a/bzrlib/tests/test_remote.py 2008-01-22 00:27:42 +0000
+++ b/bzrlib/tests/test_remote.py 2008-02-04 03:50:39 +0000
@@ -206,6 +206,23 @@
[('call', 'BzrDir.open_branch', ('quack/',))],
client._calls)
+ def test__get_tree_branch(self):
+ # _get_tree_branch is a form of open_branch, but it should only ask for
+ # branch opening, not any other network requests.
+ calls = []
+ def open_branch():
+ calls.append("Called")
+ return "a-branch"
+ transport = MemoryTransport()
+ # no requests on the network - catches other api calls being made.
+ client = FakeClient([], transport.base)
+ bzrdir = RemoteBzrDir(transport, _client=client)
+ # patch the open_branch call to record that it was called.
+ bzrdir.open_branch = open_branch
+ self.assertEqual((None, "a-branch"), bzrdir._get_tree_branch())
+ self.assertEqual(["Called"], calls)
+ self.assertEqual([], client._calls)
+
def test_url_quoting_of_path(self):
# Relpaths on the wire should not be URL-escaped. So "~" should be
# transmitted as "~", not "%7E".
More information about the bazaar-commits
mailing list