273
273
def create_workingtree(self, revision_id=None, from_branch=None):
274
274
raise errors.NotLocalUrl(self.transport.base)
276
def find_branch_format(self, name=None):
276
def find_branch_format(self):
277
277
"""Find the branch 'format' for this bzrdir.
279
279
This might be a synthetic object for e.g. RemoteBranch and SVN.
281
b = self.open_branch(name=name)
281
b = self.open_branch()
284
def get_branch_reference(self, name=None):
284
def get_branch_reference(self):
285
285
"""See BzrDir.get_branch_reference()."""
287
# XXX JRV20100304: Support opening colocated branches
288
raise errors.NoColocatedBranchSupport(self)
289
286
response = self._get_branch_reference()
290
287
if response[0] == 'ref':
291
288
return response[1]
322
319
raise errors.UnexpectedSmartServerResponse(response)
325
def _get_tree_branch(self, name=None):
322
def _get_tree_branch(self):
326
323
"""See BzrDir._get_tree_branch()."""
327
return None, self.open_branch(name=name)
324
return None, self.open_branch()
329
326
def open_branch(self, name=None, unsupported=False,
330
327
ignore_fallbacks=False):
899
896
def _has_same_fallbacks(self, other_repo):
900
897
"""Returns true if the repositories have the same fallbacks."""
901
898
# XXX: copied from Repository; it should be unified into a base class
902
# <https://bugs.launchpad.net/bzr/+bug/401622>
899
# <https://bugs.edge.launchpad.net/bzr/+bug/401622>
903
900
my_fb = self._fallback_repositories
904
901
other_fb = other_repo._fallback_repositories
905
902
if len(my_fb) != len(other_fb):
1315
1312
return self._real_repository.make_working_trees()
1317
1314
def refresh_data(self):
1318
"""Re-read any data needed to synchronise with disk.
1315
"""Re-read any data needed to to synchronise with disk.
1320
1317
This method is intended to be called after another repository instance
1321
1318
(such as one used by a smart server) has inserted data into the
1322
repository. On all repositories this will work outside of write groups.
1323
Some repository formats (pack and newer for bzrlib native formats)
1324
support refresh_data inside write groups. If called inside a write
1325
group on a repository that does not support refreshing in a write group
1326
IsInWriteGroupError will be raised.
1319
repository. It may not be called during a write group, but may be
1320
called at any other time.
1322
if self.is_in_write_group():
1323
raise errors.InternalBzrError(
1324
"May not refresh_data while in a write group.")
1328
1325
if self._real_repository is not None:
1329
1326
self._real_repository.refresh_data()
1980
1977
if response_tuple[0] != 'ok':
1981
1978
raise errors.UnexpectedSmartServerResponse(response_tuple)
1982
1979
byte_stream = response_handler.read_streamed_body()
1983
src_format, stream = smart_repo._byte_stream_to_stream(byte_stream,
1984
self._record_counter)
1980
src_format, stream = smart_repo._byte_stream_to_stream(byte_stream)
1985
1981
if src_format.network_name() != repo._format.network_name():
1986
1982
raise AssertionError(
1987
1983
"Mismatched RemoteRepository and stream src %r, %r" % (
2789
2785
medium = self._branch._client._medium
2790
2786
if medium._is_remote_before((1, 14)):
2791
2787
return self._vfs_set_option(value, name, section)
2792
if isinstance(value, dict):
2793
if medium._is_remote_before((2, 2)):
2794
return self._vfs_set_option(value, name, section)
2795
return self._set_config_option_dict(value, name, section)
2797
return self._set_config_option(value, name, section)
2799
def _set_config_option(self, value, name, section):
2801
2789
path = self._branch._remote_path()
2802
2790
response = self._branch._client.call('Branch.set_config_option',
2803
2791
path, self._branch._lock_token, self._branch._repo_lock_token,
2804
2792
value.encode('utf8'), name, section or '')
2805
2793
except errors.UnknownSmartMethod:
2806
medium = self._branch._client._medium
2807
2794
medium._remember_remote_is_before((1, 14))
2808
2795
return self._vfs_set_option(value, name, section)
2809
2796
if response != ():
2810
2797
raise errors.UnexpectedSmartServerResponse(response)
2812
def _serialize_option_dict(self, option_dict):
2814
for key, value in option_dict.items():
2815
if isinstance(key, unicode):
2816
key = key.encode('utf8')
2817
if isinstance(value, unicode):
2818
value = value.encode('utf8')
2819
utf8_dict[key] = value
2820
return bencode.bencode(utf8_dict)
2822
def _set_config_option_dict(self, value, name, section):
2824
path = self._branch._remote_path()
2825
serialised_dict = self._serialize_option_dict(value)
2826
response = self._branch._client.call(
2827
'Branch.set_config_option_dict',
2828
path, self._branch._lock_token, self._branch._repo_lock_token,
2829
serialised_dict, name, section or '')
2830
except errors.UnknownSmartMethod:
2831
medium = self._branch._client._medium
2832
medium._remember_remote_is_before((2, 2))
2833
return self._vfs_set_option(value, name, section)
2835
raise errors.UnexpectedSmartServerResponse(response)
2837
2799
def _real_object(self):
2838
2800
self._branch._ensure_real()
2839
2801
return self._branch._real_branch