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):
276
def find_branch_format(self, name=None):
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()
281
b = self.open_branch(name=name)
284
def get_branch_reference(self):
284
def get_branch_reference(self, name=None):
285
285
"""See BzrDir.get_branch_reference()."""
287
# XXX JRV20100304: Support opening colocated branches
288
raise errors.NoColocatedBranchSupport(self)
286
289
response = self._get_branch_reference()
287
290
if response[0] == 'ref':
288
291
return response[1]
319
322
raise errors.UnexpectedSmartServerResponse(response)
322
def _get_tree_branch(self):
325
def _get_tree_branch(self, name=None):
323
326
"""See BzrDir._get_tree_branch()."""
324
return None, self.open_branch()
327
return None, self.open_branch(name=name)
326
329
def open_branch(self, name=None, unsupported=False,
327
330
ignore_fallbacks=False):
1313
1315
return self._real_repository.make_working_trees()
1315
1317
def refresh_data(self):
1316
"""Re-read any data needed to to synchronise with disk.
1318
"""Re-read any data needed to synchronise with disk.
1318
1320
This method is intended to be called after another repository instance
1319
1321
(such as one used by a smart server) has inserted data into the
1320
repository. It may not be called during a write group, but may be
1321
called at any other time.
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.
1323
if self.is_in_write_group():
1324
raise errors.InternalBzrError(
1325
"May not refresh_data while in a write group.")
1326
1328
if self._real_repository is not None:
1327
1329
self._real_repository.refresh_data()
2787
2788
medium = self._branch._client._medium
2788
2789
if medium._is_remote_before((1, 14)):
2789
2790
return self._vfs_set_option(value, name, section)
2791
if isinstance(value, dict):
2792
if medium._is_remote_before((2, 2)):
2793
return self._vfs_set_option(value, name, section)
2794
return self._set_config_option_dict(value, name, section)
2796
return self._set_config_option(value, name, section)
2798
def _set_config_option(self, value, name, section):
2791
2800
path = self._branch._remote_path()
2792
2801
response = self._branch._client.call('Branch.set_config_option',
2793
2802
path, self._branch._lock_token, self._branch._repo_lock_token,
2794
2803
value.encode('utf8'), name, section or '')
2795
2804
except errors.UnknownSmartMethod:
2805
medium = self._branch._client._medium
2796
2806
medium._remember_remote_is_before((1, 14))
2797
2807
return self._vfs_set_option(value, name, section)
2798
2808
if response != ():
2799
2809
raise errors.UnexpectedSmartServerResponse(response)
2811
def _serialize_option_dict(self, option_dict):
2813
for key, value in option_dict.items():
2814
if isinstance(key, unicode):
2815
key = key.encode('utf8')
2816
if isinstance(value, unicode):
2817
value = value.encode('utf8')
2818
utf8_dict[key] = value
2819
return bencode.bencode(utf8_dict)
2821
def _set_config_option_dict(self, value, name, section):
2823
path = self._branch._remote_path()
2824
serialised_dict = self._serialize_option_dict(value)
2825
response = self._branch._client.call(
2826
'Branch.set_config_option_dict',
2827
path, self._branch._lock_token, self._branch._repo_lock_token,
2828
serialised_dict, name, section or '')
2829
except errors.UnknownSmartMethod:
2830
medium = self._branch._client._medium
2831
medium._remember_remote_is_before((2, 2))
2832
return self._vfs_set_option(value, name, section)
2834
raise errors.UnexpectedSmartServerResponse(response)
2801
2836
def _real_object(self):
2802
2837
self._branch._ensure_real()
2803
2838
return self._branch._real_branch