899
899
def _has_same_fallbacks(self, other_repo):
900
900
"""Returns true if the repositories have the same fallbacks."""
901
901
# XXX: copied from Repository; it should be unified into a base class
902
# <https://bugs.edge.launchpad.net/bzr/+bug/401622>
902
# <https://bugs.launchpad.net/bzr/+bug/401622>
903
903
my_fb = self._fallback_repositories
904
904
other_fb = other_repo._fallback_repositories
905
905
if len(my_fb) != len(other_fb):
1980
1980
if response_tuple[0] != 'ok':
1981
1981
raise errors.UnexpectedSmartServerResponse(response_tuple)
1982
1982
byte_stream = response_handler.read_streamed_body()
1983
src_format, stream = smart_repo._byte_stream_to_stream(byte_stream)
1983
src_format, stream = smart_repo._byte_stream_to_stream(byte_stream,
1984
self._record_counter)
1984
1985
if src_format.network_name() != repo._format.network_name():
1985
1986
raise AssertionError(
1986
1987
"Mismatched RemoteRepository and stream src %r, %r" % (
2788
2789
medium = self._branch._client._medium
2789
2790
if medium._is_remote_before((1, 14)):
2790
2791
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):
2792
2801
path = self._branch._remote_path()
2793
2802
response = self._branch._client.call('Branch.set_config_option',
2794
2803
path, self._branch._lock_token, self._branch._repo_lock_token,
2795
2804
value.encode('utf8'), name, section or '')
2796
2805
except errors.UnknownSmartMethod:
2806
medium = self._branch._client._medium
2797
2807
medium._remember_remote_is_before((1, 14))
2798
2808
return self._vfs_set_option(value, name, section)
2799
2809
if response != ():
2800
2810
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)
2802
2837
def _real_object(self):
2803
2838
self._branch._ensure_real()
2804
2839
return self._branch._real_branch